4周前 (05-23)  工作笔记 |   抢沙发  0 
文章评分 0 次,平均分 0.0

WordPress生成中文tag标签点击404解决方案

WordPress在IIS环境下使用时设置固定链接,可以采用一个免费的ISAPI组件:WordPress URL Rewrite。只要指定需要Rewrite的目录,不需要再编写Rewrite规则。在IIS下,由于中文编码的问题,中文标签Tags的固定链接可能会发生404错误,这里WPYOU提供了解决方法。PS:我就是直接下载插件安装,启用就OK了,试过网上其他方法,不是很方便。

在默认情况下,Wordpress对于形如这样的链接(链接1):

www.example.com/tag/中文

不能正常访问,会产生404或500错误,或者其他的错误。
而对于这样的链接(链接2):

www.example.com/?tag=中文

方法1:安装插件

安装插件IIS Chinese Tag Permalink即可解决问题!

不用担心安装插件影响wordpress的运行,这个IIS Chinese Tag Permalink非常小巧只有几个替换函数而已!如果不要使用插件,可以下载安装IIS Chinese Tag Permalink后将里面的替换函数复制到functions.php中,再禁用删除IIS Chinese Tag Permalink。、

方法2:转换编码

原理是,IIS会将PathInfo中的UTF-8转换成GBK,而QueryString中就不会转换,故而为了使用Permalink,采用以下方法:
打开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”);

局限:只对Windows主机、且必须是Windows下的IIS主机有效。

方法2:修改wp-includes/rewrite.php

这是网上最常见的方法,原理是,让WordPress在对其他内容使用Permalink的时候,对tag不使用,而使用链接2的QueryString模式发送中文编码:

function get_tag_permastruct() {
if (isset($this->tag_structure)) {
return $this->tag_structure;
}
if (empty($this->permalink_structure)) { //—–this line need change——
$this->tag_structure = ;
return false;
}

把第5行改为

if (!empty($this->permalink_structure)) {

局限:没有起到Permalink的“漂亮”作用,如果不能自己修改WP的文件就没办法了。

 

除特别注明外,本站所有文章均为小A博客原创,转载请注明出处来自http://loann.org/1984.html

关于

发表评论

表情 格式

暂无评论

登录

忘记密码 ?

切换登录

注册

扫一扫二维码分享