打开 WP-include/classes.php,把:
$pathinfo = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : '';
替换为:
$pathinfo = isset( $_SERVER['PATH_INFO'] ) ? mb_convert_encoding($_SERVER['PATH_INFO'], 'utf-8', 'GBK') : '';
找到下面的语句,把:
list( $pathinfo ) = explode( '?', $pathinfo );
替换为:
list( $req_uri ) = explode( '?', mb_convert_encoding($_SERVER['REQUEST_URI'], 'utf-8', 'GBK') );
经本人亲测,本方法可用,新版本的语句与以上可能有出入,但是方法基本相同的,将其中的相应语句替换即可。
1、在网站的根目录的wp-includes文件夹中找到“rewrite.php”这个文件;
2、备份一下“rewrite.php”,以防修改出错(改代码之前我们都最好备份一下原代码);
3、打开“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->tag_base)) $this->tag_structure = $this->front . 'tag/'; else$this->tag_structure = $this->tag_base . '/'; $this->tag_structure .= '%tag%'; return $this->tag_structure; }
4、将其中的
" if (empty($this->permalink_structure)) { "
修改为
" if (! empty($this->permalink_structure)) { ";
注意这个里面只加了一个英文“!”号,经测试,使用的这个方法非常有效。PS.直接没找到这个文件内说的这段代码。。。
最后解决中文TAG 404错误的方法,其实说到底就是ISAPI_Rewrite伪静态的规则没有写好才导致找不到网页文件的。其实就是更改一下规则就可以了:之前的tag伪静态的规则
RewriteRule /tag/(.*)$ /index\.php\?tag=$1
更改后的规则
RewriteRule /tag/(.*)/$ /index\.php\?tag=$1
这个方法我没有测试,所以不能保证是否可用,修改前请备份!
如果以上两种方法都不可行,再给大家推荐一种方法:给每个tag打上别名。
“别名” 是URL友好的另外一个名称。它通常为小写并且只能包含字母,数字和连字符。
但对于上百个以上中文Tags标签的博客,此种方法工作量巨大。慎用。
这种方法对英文tag可以正常链接但是中文tag出问题的网站管用,对英文tag链接404的网站没用。
必须登录才可以留言哦!