WordPress 中文Tag 显示404错误的BUG修正 | 影の域

影の域

关注web前端,追逐html5脚步,体会code人生

WordPress 中文Tag 显示404错误的BUG修正

| 5,860 点击

今天无意间查看站点的谷歌统计数据时发现,存在200+的错误页面。 – -!

分析了下,最终锁定WordPress 的中文支持问题。

由于WordPress对中文的支持不好,主要体现在路由的解析上,导致了中文Tag的URL解析异常,从而显示了404结果页。

 

尝试了Google来的一个普遍常用的方案:

修改 /wp-includes/classes.php 文件2处代码(154行、159行),

// 修改前
$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");

 

 

本以为可以轻松搞定,但经过验证,我无语了。  classes.php 的修改竟然不起作用!!

经过调试,发现文件的确是修改成功了,但从表象上看,PHP运行时用到的classes.php 文件似乎被缓存了一样,根本没使用我修改后的新文件。

初步估计,可能跟地址引用实例WP类有关系,但是时间有限,懒的去深究了,后面慢慢研究。

 

暂且做了最简单的fix, 修改 index.php, 头部新增一下2行 :

// fix for chinese tag
$_SERVER['PATH_INFO'] = mb_convert_encoding($_SERVER['PATH_INFO'],"UTF-8","GBK");
$_SERVER['REQUEST_URI'] = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK");

问题,算是得到了解决。 谢天谢地。回头找时间查下 classes.php 这类核心文件为什么修改不能生效的问题。