WordPress标签和目录404错误的解决方法

也不知道何时网站出现了打开标签或者目录就会出现404错误!也不知道如何产生这个错误的,是安插件还是误操作反正我是不清楚了。上网找了很多方法都不顶用!最后还是一种方法解决了问题。在叙述我解决方法之前,先看看网络上都有什么答案。

总起来说有两种方法

方法1:修改wp-includes。打开FTP,找到根目录下的wp-includes,打开wp-includes找到rewrite.php。只要简单地修改这个文件就可以了,找到以下代码:

  1. function get_tag_permastruct() {
  2. if ( isset($this->tag_structure) )
  3. return $this->tag_structure;
  4. if (emptyempty($this->permalink_structure) )
  5. $this->tag_structure = ”;
  6. return false;}

只要在empty前面加个英文的”!”就可以了,然后把这个文件上传到wp-includes的目录下就可以了。

PS:我找了半天就是没找到这个代码,我的只是如下代码

  1. function get_tag_permastruct() {
  2. return $this->get_extra_permastruct('post_tag');

方法2:修改classes-wp.php。打开FTP,找到wp-includes中的classes-wp.php文件,找到以下代码进行修改。

  1. 1、把$pathinfo = $_SERVER['PATH_INFO'];替换为:$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], “UTF-8″, “GBK”);
  2. 2、$req_uri = $_SERVER['REQUEST_URI'];替换为:$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], “UTF-8″, “GBK”);

修改好了之后,保存,然后将保存后的classes.php文件上传到服务器并覆盖原文件即可。

PS:我是找到这个代码了,也修改了,可是倒是不返回404了,反而打不开了!又搜了搜,有的人说是引号可能是中文引号,要把引号改成英文引号才行。我仔仔细细的把每个标点都改过了,还是上述情况,打不开!

方法3:就是直接修改标签的别名。据说因为wordpress支持不支持英文,只支持英文、拼音或者数字,所以只要把tags标签别名改成英文就可以了。

PS:我仔仔细细的看了我的标签和目录名,是有中文的,但是也有英文的。但是不管中文还是英文,都是打不开,还是返回404!

我真是崩溃了,这货到底怎么了。我空间下还有两个域名,仔仔细细比较了两个不同域名之间的文件差异,都一样。可是另外一个域名网站却可以打开,毛有任何问题。我的域名网站却是出现这个问题。

最后解决方法

最后我又来来回回改了数次,都是这样结果。没法,我又仔仔细细想了想,从名字上看,rewrite.php出了问题。Re-write,重新写。应该是这个出现了问题。我仔仔细细的看了看,虽然没有第一种方法所说的代码,但是代码如下情况

  1. function get_category_permastruct() {
  2. return $this->get_extra_permastruct('category');
  3. }
  4. /**
  5. * Retrieve the permalink structure for tags.
  6. *
  7. * If the tag_base property has no value, then the tag structure will have
  8. * the front property value, followed by 'tag', and finally '%tag%'. If it
  9. * does, then the root property will be used, along with the tag_base
  10. * property value.
  11. *
  12. * @since 2.3.0
  13. * @access public
  14. *
  15. * @return bool|string False on failure. Tag permalink structure.
  16. */
  17. function get_tag_permastruct() {
  18. return $this->get_extra_permastruct('post_tag');
  19. }
  20. /**
  21. * Retrieve extra permalink structure by name.
  22. *
  23. * @since 2.5.0
  24. * @access public
  25. *
  26. * @param string $name Permalink structure name.
  27. * @return string|bool False if not found. Permalink structure string.
  28. */
  29. function get_extra_permastruct($name) {
  30. if ( emptyempty($this->permalink_structure) )
  31. return false;
  32. if ( isset($this->extra_permastructs[$name]) )
  33. return $this->extra_permastructs[$name]['struct'];
  34. return false;
  35. }

试着在if ( empty($this->permalink_structure) )这个代码加上一个“!”,改成如下代码if ( !empty($this->permalink_structure) )

保存以后,再试试,一切正常!我也不知道这是啥原因。因为我对代码一窍不通。又上网搜了搜,有的说可能是对代码进行了优化,或者是3.2.1版rewrite.php。

好吧,不管了,反正最后解决了。希望这文能对和我有一样困惑的站长有所裨益。

  • 本博客文章如未特别说明,皆为本站原创,默认采用署名-相同方式共享 4.0 国际协议
  • 相关文章

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注