IIS下配置WordPress永久链接支持中文完美版并生成静态页

windows下支持永久链接可以用404错误定义:

在网站根目录新建404.php文件,内容为:

<?phpheader("HTTP/1.1 200 OK");$ori_qs = strtolower($_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');?>

在IIS中设置自定义错误,类型选择URL,注意不要选择成了文件,否则只能支持htm或html文件的错误文件。
输入http://kukk.tk/404.php作一些测试。

 

如果生成的链接中含有中文,需要修改如下文件。

1、打开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永久链接去掉Index.php的效果已经相当很好了。

 

经测试,可行。

如果要生成静态页,需安装cos-html-cache

最新版的要求主机必须支持URLrewrite,也成功的完成了IIS的rewrite,但就是只生成首页,但不确定是什么时候生成的。

没办法,把最新的cos-html-cache2.7.3删除了,安装了早期的手动生成文件的1.1版本,修改固定连接,比如本站为:/wp/%post_id%.html。然后启用cos-html-cache,发现成功了。
cos-html-cache1.1下载)

posted @ 2010-11-14 22:00  技牛  阅读(1115)  评论(0)    收藏  举报