品味人生 感悟生活 关注互联网

WordPress 中文 Tag 链接问题解决方案

WordPress 中文 Tag 链接无法正常访问的问题想必多数使用 Windows+IIS 主机的朋友都有遇到,以前出现这个问题增加一条伪静态规则就可以解决,见:IIS 下实现 WordPress 伪静态,换了虚拟主机后不行了。找到一些可行的解决办法,摘录如下:

产生这个问题的主要原因是地址编码问题,及UTF-8和GBK之间转换的问题。IIS 对 URL 截取的时候取得的是 GBK 编码,但是 WordPress 中文都用的 UTF-8 编码,所以我们要对编码进行处理后再交给数据库进行查询。

一、转换编码解决 WordPress 中文 Tag 链接问题(推荐)

打开文件:wp-includes\classes.php

查找:

$pathinfo = $_SERVER['PATH_INFO'];

修改为:

$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK");

再查找:

$req_uri = $_SERVER['REQUEST_URI'];

修改为:

$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK");

保存,上传,问题解决。

二、禁止 Tag 伪静态解决 WordPress 中文 Tag 链接问题

打开文件:wp-includes/rewrite.php

查找:

function get_tag_permastruct() {

修改这个函数中的:

if (empty($this->permalink_structure)) {

为:

if (!empty($this->permalink_structure)) {

完成。

« 博客升级到WordPress2.8 午睡的好处与禁忌 »

已有 5 条评论 »

  1. 福尔摩X 福尔摩X October 7th, 2009 at 11:12 pm

    谢了,的确可以用!

  2. jerreychen jerreychen January 6th, 2010 at 10:04 pm

    我改过了还是不能使用...

    1. Fufu Fufu January 6th, 2010 at 10:20 pm

      哇,你用的GoDaddy主机,Win还是Linux?
      国内主机照上面的修改是可行的。GD是英文服务器系统,尚不明确,现在我用Typecho放在GoDaddy主机(Win)上也存在中文tag问题,提示404。
      正在找办法解决。

      1. jerreychen jerreychen January 6th, 2010 at 10:49 pm

        Win 主机 IIS7

        1. Fufu Fufu January 6th, 2010 at 11:48 pm

          我也是Win+IIS7,共同关注这个问题,有解决办法我会更新在这里。

添加新评论 »

captcha
请输入验证码