当博客从华夏名网转移到阿里云之后,发现了不少问题,其中一个就是wordpress中文标签无法访问,出现404错误页。

原因:在Windows主机的IIS服务器下WordPress不支持中文编码法访问,由于原来在华夏名网的服务器是linux的,所以没有出现这种问题

解决方法:如果要想正常打开中文标签,就需要让WordPress能支持中文的编码,也就是UTF-8和GBK编码。

下面分享下我的解决过程;

 
  • 方法一:这也是百度最多的解决办法之一(但是对我没有作用,我根本找不到这两句代码)
打开wp-include中的class-wo.php文件,找到第1577行和第158行代码进行修改。
第153行原代码: $pathinfo = $_SERVER['PATH_INFO']; 替换为: $pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK");
第158行原代码: $req_uri = $_SERVER['REQUEST_URI']; 替换为: $req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK");
修改好了之后,保存,然后将保存后的classes.php文件上传到服务器并覆盖原文件即可。
 
 
  • 方法二:根据小罗的博客解决方案 对他和部分人有用,对我依然无效
首先打开Wordpress站点下wp-includes目录里的class-wp.php文件。操作之前复制备份一个是好的习惯。
搜索$_SERVER['REQUEST_URI']或直接定位157行。用“//”注释掉

//list( $req_uri ) = explode( '?', $_SERVER['REQUEST_URI'] );注释掉这一行,添加下面两行代码
$Temp_REQUEST_URI= mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK");
list( $req_uri ) = explode( '?', $Temp_REQUEST_URI );
搜索$_SERVER['PATH_INFO']或直接定位到153行。用“//”注释掉此行:

//$pathinfo = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : '';注释掉这一行,添加下面两行代码
$Temp_PATH_INFO = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK");
$pathinfo = isset( $Temp_PATH_INFO ) ? $Temp_PATH_INFO : '';
  • 方法三:最后我用了一个插件解决了我的问题(是我人品太差么?)
 
插件名称:Chinese Tag Names
插件作者:Coconut
插件页面:http://nutsland.cn/blog/archives/177.html
当前版本:1.1
适用于Wordpress版本:2.0.2+
下载地址:http://wordpress.org/extend/plugins/chinese-tag-names/
插件说明
在Wordpress中设定了固定链接之后,有时(多见于Win主机)会出现中文标签(Tag)的固定链接不能访问的问题。
即 http://example.com/tag/中文 不能访问,而 http://example.com/?tag=中文 可以访问。
可以通过修改 class-wp.php 的方式来解决,但是每次Wordpress升级都要重新修改一次,比较麻烦。
本插件提供了便捷的解决方法。
现在支持所有包含中文的固定链接了,包括标签、分类、作者存档页面、文章名等,例如:
http://example.com/tag/中文标签
http://example.com/category/中文分类
http://example.com/archives/中文文章名
http://example.com/archives/author/中文作者名
http://example.com/中文页面名
 
最后总结,不管用那种方法,只要能解决自己的问题就好,不必纠结过程,重在目的。我承认是我人品差了。
也希望大家能早日找到合适自己的解决方法

 

 

引用源文:猛戳这里