会员登录 还没有账号? 立即注册

WordPress网站定制开发专家
成为WPYOU会员, 享受更多专属优惠吧!

成为WPYOU联盟推广代理,获取高比例的推广佣金分成

立即加入

解决WordPress中文标签Tags链接错误

WordPress在IIS环境下使用时设置固定链接,可以采用一个免费的ISAPI组件:WordPress URL Rewrite。只要指定需要Rewrite的目录,不需要再编写Rewrite规则。在IIS下,由于中文编码的问题,中文标签Tags的固定链接可能会发生404错误,这里WPYOU提供了解决方法。

在默认情况下,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的文件就没办法了。

在线留言

你必须 才能评论!

  1. WordPress 4.1 在Windows/IIS环境下中文标签/地址无法访问提示404解决 | SCWTKID S'NOISNEMID2015/04/09 08:46:50

    […] WordPress在IIS环境下使用时设置固定链接,可以采用一个免费的ISAPI组件:WordP… 以下方法适用于WordPress 4.1版本。 […]

在线客服

点击这里给我发消息 定制开发 购买主题 售前咨询 售后服务
返回顶部