由于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
本博客所有文章如无特别注明均为原创。