今天无意间查看站点的谷歌统计数据时发现,存在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 这类核心文件为什么修改不能生效的问题。