解决wordpress中文标签/搜索/下一分页404无法访问
wordpress中文标签、标签分页、搜索分页404的解决办法
今天无意间发现,在摆弄自己的博客网站时
发现标签目录分页后,点选下一页的时候会出现404错误。
待解决标签过次页问题后,已能正确显示后。
进一步测试网站时,又发现网站的搜索结果页,在过次页问题上再次出现了404错误。
百度了一下这个问题,发现这算是wordpress的一个通病
很多人都遇到了这个问题
但是解决办法基本上仅适用老版本的wordpress,新版本的已经不能按照教程适用了。
通过多次测试,wordpress4.9.7版本,修改中文标签、标签分页、搜索分页404的解决办法如下:
首先是修改标签中文404的问题:
找到wordpress网站目录WP-include/class-wp.php(需要修改两处)
找到
$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’);
如果修改正确的话,现在,wordpress网站点击中文标签已经可以正常显示页面
但是如果出现多个分页,点击下一页时,依旧会出现404错误。
接下来,我们来修改标签中文分页404的问题:
找到wordpress网站目录wp-includes目录中的link-template.php文件
找到
$result = $base . $request . $query_string;
替换为
$result = $base . mb_convert_encoding($request, ‘UTF-8’, ‘GBK’) . $query_string;
如果修改正确的话,现在,wordpress网站点击中文标签的过次页也已经可以正常显示页面。
最后,我们来修改搜索分页404的问题:
在当前主题的functions.php文件第一行代码 <?php 下面添加以下代码:
function tongleer_search_url_rewrite() {
if ( is_search() && ! empty( $_GET[‘s’] ) ) {
wp_redirect( home_url( “/search/” ) . urlencode( get_query_var( ‘s’ ) ) );
exit();
}
}
add_action( ‘template_redirect’, ‘tongleer_search_url_rewrite’ );
自此,如果顺利的话,wordpress4.9.7版本已经可以支持中文标签、中文标签分页面、搜索结果分页面。