|
  
- 帖子
- 329
- 精华
- 8
- 积分
- 30
- 努力值
- 0
- 人气值
- 14
|
楼主
发表于 2008-9-12 21:37
| 只看该作者
[分享] 让IIS支持WordPress的Permalink功能(修复中文tag页翻页问题)
给IIS加上支持WordPress的Permalink功能,可以通过ISAPI的URL Rewrite过滤器,或者404重定向的方式来实现。
ISAPI过滤器需要手动设置Rewrite规则,对于普通用户来说这是很困难的,而且一些空间商也不提供此类功能。
WordPress官网给出404重定向解决方法,不过存在缺陷,不能支持带Query String的链接,例如搜索结果的翻页:- http://domain/page/2?s=key
复制代码 这里介绍一种同样通过404重定向的方式,解决Query String问题的方式:- <?php
- /* For Wordpress Permalink */
- // 404 parameter pattern
- $ori_qs = $_SERVER['QUERY_STRING'];
- $pattern = '/[^;]+;[^:]+:\/\/[^\/]+(\/[^\?]*)(?:\?(.*))?/i';
- preg_match($pattern, $ori_qs, $matches);
- // Request path
- $ori_path = $matches[1] . (strlen($matches[2]) > 0 ? '?' . $matches[2] : '');
- $_SERVER['PATH_INFO'] = iconv('GBK', 'UTF-8', $ori_path); // For Chinese slug on IIS (CHS)
- $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
- // Query parameters
- $query_args = explode('&', $matches[2]);
- unset($_GET);
- foreach ($query_args as $arg)
- {
- $the_arg = explode('=', $arg);
- $_GET[$the_arg[0]] = $the_arg[1];
- }
- header('HTTP/1.1 200 OK');
- include('index.php');
- ?>
复制代码 将上述代码保存为:wp-404-handler.php文件,上传至WordPress根目录,然后指定404模式为“url”,地址为"/wp-404-handler.php"。
如果你的WordPress不是安装在根目录,例如:"http://domain/blog",那么请将上述地址修改为“/blog/wp-404-handler.php”。
===============以下在IIS上支持中文slug方式作废,请参考上面关于中文slug的处理===============
另外,中文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功能了。
[ 本帖最后由 JAY 于 2008-11-8 13:33 编辑 ] |
WFans版主友情提示:
如果你的WordPress出现了问题,提问前必看:
1. 请对你的问题描述清楚,不用太深入,你自己能看明白就好
2. 请给出出错的地址,这样我们才好帮你分析诊断
3. 如果问题解决了请修改求助贴标题,在后面加上【已修复】字样,好方便别的朋友查看
4. 最后如果你看厌了满是字的BLOG,欢迎访问Geki Moe!!! ACG Share |
|