WordPress 设置静态后导致中文标签无法访问的解决方法

作者: 坎肩儿 分类: wordpress整理 发布时间: 2009-11-28 06:51

      导致这个问题的原因,网上有资料显示,wordpress设置伪静态后导致对$_SERVER[‘PATH_INFO’]和$_SERVER[‘REQUEST_URI’]的取值取到的是GBK编码的url,但是WordPresss是用UTF-8编码的,所以中文就转成了乱码,再转换成SQL去数据库查询的时候就无法找到记录了。

      解决方法,打开wp-includes\classes.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”);

      OK!问题成功解决!