wordpress版本:4.6
wordpress对于中文固定链接的支持天生捉急,一遇到中文就返回404,真是让人Orz。
这个问题的成因应该是与wordpress设计时没有考虑中文编码有很大的关系。具体原理可能是后端因为没有设定utf-8编码所以无法索引相应的文件。
如果希望解决这个问题,这里有三个方案:
最简单的解决方案是进入管理界面后(wordpress网址后加/wp-admin/),在左侧的【设置】→【固定链接】中将网址改为与标题无关的选项(比如第一项“朴素”,不过第一项是动态链接,推荐使用第四项(数字型),对seo友好些)即可。嗯,简单粗暴是吧。
不过这样的网址挺不美观的(虽然短,但是一点都不优雅不是么!
如果强迫症的话可以试下下面的方案。
修改网页源码:
既然祸从转码出,那就应从转码解决。
我们自己为程序添加一个转码机制。
修改/wp-includes/class-wp.php文件中第178行:
pathinfo = isset(_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : '';
为
pathinfo = isset(_SERVER['PATH_INFO'] ) ? mb_convert_encoding($_SERVER['PATH_INFO'], 'utf-8', 'GBK') : '';
第182行:
list( req_uri ) = explode( '?',_SERVER['REQUEST_URI'] );
为
list( req_uri ) = explode( '?', mb_convert_encoding(_SERVER['REQUEST_URI'], 'utf-8', 'GBK') );
不过这个方法的弊端很多。首先是不能升级。wordpress一更新修改就可能消失;其次中文地址可能会对SEO不利;最后这个方法的通用性很低,可能因为版本插件等各种原因失效。所以不推荐。
最后一个解决方案是使用插件将固定链接中的中文标题自动转为拼音。
下载wp slug translate插件即可完成这一工作。
对于该插件的详细介绍在此。
PS.在第一个方案中如果选择第四项一定记得开启apache的mod-rewrite否则会丢失链接的。
评论一个看看效果w