您的位置 首页 Php教程

怎样解决WordPress中文Tag抓取404错误

这几天通过Google网站管理员工具看了一下这个博客的抓取情况,不看不知道,一看吓一跳。就那么几天就出现200多个404错误页面,点进去一看,都是因为中文标签的问题。

中文标签不能正常显示,中文Tag在URL中显示乱码。我以为仅仅是网站抓取的错误,然而我在首页点下中文tag,点进去都是提示404错误,真无语。

中文tag显示错误

于是就去网上查了下资料,可以通过以下方式来解决:(本人亲测可用)

主要是通过转换编码的方法,它的主要原理是,IIS会将PathInfo中的UTF-8转换成GBK,而QueryString中就不会转换,故而为了使用Permalink,采用以下方法:

以前的wordpress版本是修改网站根目录的wp-includes\classes.php文件,但是3.1版本没这个文件了,新版本的wp文件中名称被改为class-wp.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 = 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”);

不过这种方式有个局限就是只对Windows主机、且必须是Windows下的IIS主机有效。因为本人的主机就是windows主机,所以解决了。

blank

关于作者: 寻小山

江西九江人,专注新媒体、搜索引擎、电商运营、IT技术、软件使用技巧!

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

3条评论