首页 > 站点建设 > 支持Download Monitor插件的404.php

支持Download Monitor插件的404.php

2009年8月17日 晴枫 发表评论 阅读评论

由于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


枫芸志原创文章,转载请注明来源并保留原文链接

本文链接:http://witmax.cn/404-php-support-download-manitor.html


相关日志

分类: 站点建设 标签: , 1,019次阅读
  1. neva
    2010年6月10日14:34 | #1

    如果点击下载链接出现的是404页面是不是把上面这段代码加入就好

    [回复]

    晴枫 回复:

    @neva, 请完整阅读本文和文中连接的文章,相信能帮你解决问题

    [回复]

  1. 2010年6月8日21:10 | #1
订阅评论
  欢迎参与讨论,请在这里发表您的看法、交流您的观点。