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




