支持Download Monitor插件的404.php
由于WordPress Download Monitor插件用到了URL重写性能,具体可在后台管理界面下载管理的自定义下载地址中有说明。这里只说明404.php页面的编码思路,具体使用方法可参考《WordPress永久链接在IIS下的实现》。关于Download Monitor插件的使用可参考《WordPress Download Monitor插件使用说明》。
如果启用了Download Monitor插件的下载页面(如本站的下载界面),那么下载页面中的下载项地址格式为下载页面的网址后加上?did=n(n为下载编号,数字),如本站下载页面中WordPress Download Monitor插件的地址是http://witmax.cn/downloads?did=4。
如果设置了自定义下载地址,那么在文章中下载项的链接地址将表示为自定义格式,如本站自定义下载地址为http://witmax.cn/downloads/ID。那么WordPress Download Monitor插件对应的下载地址便是http://witmax.cn/downloads/4。
以上说明了两种下载地址格式,而上面的地址皆是虚假路径,即站点上其实不存在downloads文件夹。因而便要针对以上两种类型的地址进行处理,转化为真实下载地址wp-content/plugins/wp-download_monitor/download.php?id=n
(n为下载编号,数字)。同时由于整个博客文章同样适用了URL重写性能,其他不存在的链接要重定向到index.php。
404.php的代码如下:
<?php $uri = $_SERVER['REQUEST_URI']; $uri = preg_replace("/.*404;http:\/\/[^\/]+/", "", $uri); $_SERVER['REQUEST_URI'] = $uri; $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI']; // 解决重定向的页面中的页面导航问题 $_SERVER['SCRIPT_NAME'] = $_SERVER['PATH_INFO']; $_SERVER['QUERY_STRING'] = ""; // 处理页面GET参数 $pos = strpos($uri, "?"); if ($pos !== false && $pos + 1 != strlen($uri)){ $arr = split("&", substr($uri, $pos + 1)); foreach($arr as $value){ $pair = split("=", $value); if (count($pair) == 2) $_GET[$pair[0]] = $pair[1]; } } // 引入处理程序 // 根据你的自定义下载地址修改下面这句引号中的正则表达式 if (preg_match("/\/downloads\/(\d+)$/", $uri, $matches)){ $_GET['id'] = $matches[1]; include('wp-content/plugins/download-monitor/download.php'); } else{ include('index.php'); } ?>
如果你的下载项自定义下载地址不是/downloads/ID,那么需要根据你的设置修改一下上面的404.php,具体位置在代码注释中说明。
2009年11月28日更新,修复download monitor插件内容页显示内带GET参数无效的问题。
2010年2月9日更新,重写代码,简化逻辑,修复download monitor页面下载项点击后无反应的bug
如果点击下载链接出现的是404页面是不是把上面这段代码加入就好
[回复]
晴枫 6月 10th, 2010 下午5:56 回复:
@neva, 请完整阅读本文和文中连接的文章,相信能帮你解决问题
[回复]