wordpress站点做了伪静态,并定义了固定连接的格式后,会出现中文标签404的问题,其它都正常,就是在wordpress中文tag标签打开是404页面错误。
由于wp是外国的产品,所以并没有考虑中文标签的兼容性问题,不少朋友都会遇到中文标签404的问题,下面我来分享一下解决这种蛋疼的问题方法。
解决 WordPress 无法打开中文标签链接的文章(服务器支持 UTF-8,不再需要修改文件支持中文链接。)
首先找到wordpress的wp-includes目录下-》class-wp.php文件,进行如下修改即可完美解决。
wp-includes/class-wp.php 153 行:
$pathinfo = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : '';
修改为:
$pathinfo?= isset( $_SERVER['PATH_INFO'] ) ? mb_convert_encoding($_SERVER['PATH_INFO'], 'utf-8', 'GBK') : '';
wp-includes/class-wp.php 157 行:
list( $req_uri )?= explode( '?', $_SERVER['REQUEST_URI'] );
修改为:
list( $req_uri )?= explode( '?', mb_convert_encoding($_SERVER['REQUEST_URI'], 'utf-8', 'GBK') );
通过以上修改,即可完美解决!
方法一:更改每个标签的别名为英文或数字
此法适合大部分小站点,没有很多标签,一般发现问题的时候也都是新站,所以一个个更改起来比较容易,同样对后续的SEO也会有所帮助,毕竟链接中出现一串中文有点很low的感觉。不要感觉很麻烦的样子,因为更改过程很快,可能最多几分钟的样子。
操作方法:后台 - 文章 - 标签,快速编辑某标签,更改其别名为英文或数字即可。
方法二:使用插件
此法适合懒人或者标签量数百以上的站点,原理就是通过批量修改标签的别名或者拦截处理,这种方法一般可以做到一劳永逸,但很有可能意味着以后站点就离不开它了。
推荐插件:Auto Tag Slug 或 IIS Chinese Tag Permalink
操作方法:后台 - 插件 - 搜索插件名 - 安装并启用插件,后面的设置就很简单了。
方法三:更改服务器rewrite规则
此法适合有服务器管理权限且知道如何修改rewrite的站长,很多站长看到这里就pass了,但想折腾的你为何不多走一步呢?
之前的规则
RewriteRule /tag/(.*)$ /index.php?tag=$1
更改后的规则
RewriteRule /tag/(.*)/$ /index.php?tag=$1