wordpress伪静态后包含中文词的url显示找不到内容(解决方法)
用wordpress伪静态规则后,我们点击中文标量的文章链接时说找不到网址。
这是因为:WP的编码为utf-8,而URL中Slug编码为gbk。然后WP取得文章Slug后,通过它来查找文章就会找不到!因为编码不同呀。修改wp-include/classes.php中(44-50行)。
更改方法:
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'];
替换为下(转换$_SERVER['PATH_INFO']和$_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’);
这个操作的意思就是:将Slug的编码由GBK转换为utf-8(您也可以用iconv,或是其它的函数来代替mb_convert_encoding)。
本博客即为演示。
