WordPress中文网站目录无法打开(404)解决方案

avatar
avatar
tianzi
91
文章
1
评论
January 23, 202015:51:07 评论 1982字阅读6分36秒

问题描述

问题描述

当wordpress博客访问网站中含有中文,如“

https://www.tianziweb.net/2020/01/23/微软windows-10快速预览版19546推送/

”的时候,特别是我们发布的文章为中文标题同时又在设置中选择了文章地址为包含文章名的格式进入文章页面时,或是中文目录标题进入分类目录页面时,会导致访问了如上含有中文的网址路径,这时候出现了404无法访问的情况。

如果我们在wordpress设置中将文章地址格式修改为简单的数字编码等不含中文的格式,或者是发布的文章名为全英文(不含中文)的情况下,则可以正常进入文章页面

解决方案

方案一

简单粗暴,直接将文章地址格式修改为纯数字编码或其他不含中文的格式,即尽量避免出现中文地址

方案二

显示上述方法简单操作,但是治标不治本,并没有真正解决问题

下面先介绍真正的解决方法

找到wordpress目录下的wp-includes目录,编辑其中的class-wp.php文件(wordpress/wp-includes/class-wp.php)

(3.1版本前为wordpress目录下的wp-include/classes.php文件)

按照如下方法修改:

wp-includes/class-wp.php (WordPress4.8.1在178行):

$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 (WordPress4.8.1在182行):

list( $req_uri ) = explode( '?', $_SERVER['REQUEST_URI'] );

修改为

list( $req_uri ) = explode( '?', mb_convert_encoding($_SERVER['REQUEST_URI'], 'utf-8', 'GBK') );

注:目前最新版本wordpress的代码行数有所变化,但大致在170行附近,可通过搜索“SERVER['PATH_INFO']”来查找定位,两处需修改的位置距离不远

修改前后总体对比:

修改前总体为:

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');

本质修改是将两处的

$_SERVER['PATH_INFO']

修改为

mb_convert_encoding($_SERVER['REQUEST_URI'], 'utf-8', 'GBK')

也就是原来是直接返回地址,现在是通过函数将地址进行转码后返回


实际打开的地址应为:

https://www.tianziweb.net/2020/01/23/%e5%be%ae%e8%bd%afwindows-10%e5%bf%ab%e9%80%9f%e9%a2%84%e8%a7%88%e7%89%8819546%e6%8e%a8%e9%80%81/

[/mark_a]

注:可能需要打开Apache重写功能(或其他相应使用的服务器软件重写功能),并给与wordpress目录重写权限,若之前未打开可能依然无法访问

继续阅读
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar
  • 本文由 发表于 January 23, 202015:51:07
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
为WordPress主题添加文章字数和阅读时间 Wordpress

为WordPress主题添加文章字数和阅读时间

From:知更鸟 http://zmingcx.com/main-inscription-number-and-reading-time.html 显示文章字数和阅读时间,这功能有什么用呢,我也不知道,不过有用户说人家有我们能不能也加一个,那就加呗,就有这篇为WordPress主题添加文章字数和阅读时间。...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: