支持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



    本博客所有文章如无特别注明均为原创。
    复制或转载请以超链接形式注明转自枫芸志,原文地址《支持Download Monitor插件的404.php
    标签:
    分享:

已经有10 条评论抢在你前面了~

  1. 沙发
    neva 2010年6月10日 下午2:34

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

    [回复]

    晴枫

    晴枫 回复:

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

    [回复]

无觅相关文章插件,快速提升流量