加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

wordpress中文标签出现404错误的解决办法

发布时间:2022-06-24 11:09:23 所属栏目:教程 来源:互联网
导读:最近刚把wordpress博客从linux服务器更换到windows服务器,无意间发现中文标签点击报404错误(后来百度只有iis环境才会有这个问题),找不到页面,404错误对seo优化肯定是不又好的,所以赶紧想办法处理,刚开始以为数据没有转移完全,又重新转移了一次,但是故障依
  最近刚把wordpress博客从linux服务器更换到windows服务器,无意间发现中文标签点击报404错误(后来百度只有iis环境才会有这个问题),找不到页面,404错误对seo优化肯定是不又好的,所以赶紧想办法处理,刚开始以为数据没有转移完全,又重新转移了一次,但是故障依旧,没有办法,还是得需要解决啊,于是百度搜索“wordpress 中文标签404”,很多完美解决方案就唰唰的出来了.
 
  首先找了一个方法马上通过FTP测试,发现神奇的中文标签可以用了.
 
  方法如下:
 
  1.在网站的根目录的wp-includes文件夹中找到“rewrite.php”这个文件。
 
  2.备份一下“rewrite.php”,以防修改出错(改代码之前我们都最好备份一下原代码).
 
  3.打开“rewrite.php”文件中我们找到如下代码:
 
  function get_tag_permastruct() {if (isset($this->tag_structure))
 
  {return $this->tag_structure;}if (empty($this->permalink_structure)) {
 
  //修改这句
 
  ag_structure = '';return false;}if
 
  (empty($this->tag_base))$this->tag_structure = $this->front .
  
  'tag/';else$this->tag_structure = $this->tag_base .
  
  '/';$this->tag_structure .= '%tag%';return $this->tag_structure;}
  将其中的:
 
  " if (empty($this->permalink_structure)) { ”
 
  修改为
 
  “ if (!empty($this->permalink_structure)) { "
 
  注意这个里面只加了一个英文“!”号。
 
  虽然中文tag标签没问题了,但是去访问内页的时候,发现伪静态失效了,没办法只能还原刚才修改的rewrite.php文件(记得修改任何文件之前都要备份),继续搜索其他方法……
 
  终于功夫不负有心人,又找到一个完美方案,测试中文404真的没有报错了,方法如下:
 
  1.打开wp-include文件夹,找到并打开编辑class-wp.php文件.
 
  2.查找代码:
 
  $pathinfo = $_SERVER['PATH_INFO'];
 
  把这句代码替换成:
 
  $pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK");
 
  3.查找代码:
 
  $req_uri = $_SERVER['REQUEST_URI'];
 
  把这句代码替换成:
 
  $req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK");
 
  由于自己较懒惰,方案里面提供了修改好的class-wp.php文件,于是我直接下载上传了,测试页面伪静态也没有问题,其他访问也没问题.
 
  第二天我去发布文章,上传图片的时候发现图片上传不了,以为是自己开的CDN加速的原因,于是乎用测试域名去测试发现还是无法上传,以为是插件冲突了,全部停止还是不行,再次怀疑自己转移数据没有转移完全,再去转了一次,重新转移测试图片上传成功,又去把之前修改的class-wp.php文件上传以后,去测试图片上传失败,还原此文件上传成功.
 
  终于找到原因了,原来上面的方法还是有瑕疵,再去仔细一看教程,原来只适用wordpress3.5以下的版本.
 
  心灰意冷,再去找方法,终于找到一个适用于wordpress4.1版本的方法,如下:
 
  1.首先找到wordpress的wp-includes目录下-》class-wp.php文件,进行如下修改就可以解决在Windows系统下部分中文标签无法打开的情况。
 
  2.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') : '';
 
  3.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') );
 
  然后将class-wp.php文件保存并上传覆盖原文件,然后再全面测试伪静态、中文标题、图片上传都正常,此时终于完美解决.
 
  在搜索的时候还找到了其他方法,未测试不知道是否可以解决,版本不同,方法不同,可以自行参考.
 
  WordPress3.1之前版本,方法如下:
 
  打开 WP-include/classes.php(3.1之前版本)或WP-include/class-wp.php(3.1+之后版本,下文称新版)找到第154行(新版为142行),把:
 
  $pathinfo = $_SERVER['PATH_INFO';
 
  替换为:
 
  $pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], 'UTF-8', 'GBK');
 
  找到第159行(新版为147行),把:
 
  $req_uri = $_SERVER['REQUEST_URI';
 
  替换为:
 
  $req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], 'UTF-8', 'GBK');
 
  还有方法如下:
 
  登录wordpress后台,在文章标签里。给每一个含中文的Tags标签,加上一个标签别名。“别名” 是URL友好的另外一个名称。它通常为小写并且只能包含字母,数字和连字符。
 
  对于上百个以上中文Tags标签的博客,此种方法工作量巨大。
 
  还有说是ISAPI_Rewrite伪静态的规则没有写好才导致找不到网页文件的,其实就是更改一下规则就可以了,之前的tag伪静态的规则.
 
  RewriteRule /tag/(.*)$ /index.php?tag=$1
 
  更改后的规则:
 
  RewriteRule /tag/(.*)/$ /index.php?tag=$1。
 
 

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读