Tags: ,.

AB MM这台是IIS环境下搭建的PHP+MYSQL环境,SO,我原来自定义的永久链接失效了,这就造成通过搜索引擎访问我的blog的xD们会出现打不开页面的请款,偶然在DRL看到这个链接http://wfans.org/forums/thread-952-1-1.html,试验了下,果然有效,顺手收藏备用,呵呵。

————————-

给IIS加上支持WordPress的Permalink功能

给IIS加上支持WordPress的Permalink功能,可以通过ISAPI的URL Rewrite过滤器,或者404重定向的方式来实现。
ISAPI过滤器需要手动设置Rewrite规则,对于普通用户来说这是很困难的,而且一些空间商也不提供此类功能。
WordPress官网给出404重定向解决方法,不过存在缺陷,不能支持带Query String的链接,例如搜索结果的翻页:
复制内容到剪贴板
代码:

http://domain/page/2?s=key

这里介绍一种同样通过404重定向的方式,解决Query String问题的方式:

复制内容到剪贴板
代码:
<?php
$ori_qs = $_SERVER['QUERY_STRING'];
$pattern = ‘/[^;]+;[^:]+:\/\/[^\/]+(\/[^\?]*)(?:\?(.*))?/i’;

preg_match($pattern, $ori_qs, $matches);
$_SERVER['PATH_INFO']    = $matches[1] . ‘?’ . $matches[2];
$_SERVER['REQUEST_URI']  = $_SERVER['PATH_INFO'];
$query_args              = explode(’&’, $matches[2]);
unset($_GET);
foreach ($query_args as $arg)
{
    $the_arg = explode(’=', $arg);
    $_GET[$the_arg[0]] = $the_arg[1];
}

include(’index.php’);
?>

将上述代码保存为:wp-404-handler.php文件,上传至WordPress根目录,然后指定404模式为“url”,地址为”/wp-404-handler.php”。
如果你的WordPress不是安装在根目录,例如:”http://domain/blog”,那么请将上述地址修改为“/blog/wp-404-handler.php”。

另外,中文slug在IIS上失效的方式需要通过修改”wp-includes/classes.php”文件来实现。打开该文件,搜索:

引用:

if ( isset($_SERVER['PATH_INFO']) )
        $pathinfo = $_SERVER['PATH_INFO'];
else
        $pathinfo = ”;
$pathinfo_array = explode(’?', $pathinfo);
$pathinfo = str_replace(”%”, “%25″, $pathinfo_array[0]);
$req_uri = $_SERVER['REQUEST_URI'];

修改为

引用:

if ( isset($_SERVER['PATH_INFO']) )
        $pathinfo = iconv(’GBK’, ‘UTF-8′, $_SERVER['PATH_INFO']);
else
        $pathinfo = ”;
$pathinfo_array = explode(’?', $pathinfo);
$pathinfo = str_replace(”%”, “%25″, $pathinfo_array[0]);
$req_uri = iconv(’GBK’, ‘UTF-8′, $_SERVER['REQUEST_URI']);

经过这两步修改以后,IIS也能完美支持WordPress的Permalink功能了。


评论

Good.Be the first to comment on this entry.

Post comment

comment has COPYRIGHT too!