Windows主机下WordPress的tag解决办法

国内还是有很多的主机是用IIS+php+mysql搭建的,对于使用wordpress的用户来说,服务器是windows系统的话下一定遇到过以下2钟情况
1.永久链接中的问题,在链接中会有“index.php”,这个问题可以通过伪静态处理的方法来解决
2.tag中中文tag的链接转向404
昨天无意中发现第二个问题没有解决,现在提供解决办法供参考
首先我尝试了修改rewrite.php,此法如下:

打开wp-includes下rewrite.php
function get_tag_permastruct() {
if (isset($this->tag_structure)) {
return $this->tag_structure;
}

if (empty($this->permalink_structure)) {
$this->tag_structure = ”;
return false;
}

把黑体部分替换成if (! empty($this->permalink_structure)) {

此法确实能够解决连接问题,但是修改后tag的链接格式会变成系统默认的/?tag=%tag%/,经过摸索修改下面一行可能能解决格式问题,但是经过尝试,失败。欢迎高手赐教。

于是找了第二种解决方案:修改classes.php

打开wp-includes下classes.php

找到45行(2.7版本中为152行)开始

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 = mb_convert_encoding($_SERVER['PATH_INFO'],"utf-8","gbk");
else
$pathinfo = '';
$pathinfo_array = explode('?', $pathinfo);
$pathinfo = str_replace("%", "%25", $pathinfo_array[0]);
$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'],"utf-8","gbk");

通过这种方法修改能保持原来的永久链接方式,效果不错

注意:代码可能会因编码问题复制出错,建议使用英文输入对照黑体部分手动修改;改rewrite.php过程中不要修改永久链接中相关设置,不然会出现所有tag的链接都转向404页

OK,enjoy it!