这几天通过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主机,所以解决了。

也许你也感兴趣:

该日志由 热门手机棋牌游戏下载 于2012年06月21日发表在Php研究分类下,
转载请注明: 怎样解决WordPress中文Tag抓取404错误
关键字: , , ,
【上一篇】
【下一篇】

3 篇回应 (访客:2 篇, 博主:1 篇)

  1. 楼主,能教教我你的留言评论下方怎么实现用微博账号登陆的吗?

    #1楼