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。

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

评论

此博客中的热门博文

EndNote为参考文献分类显示

如何选择和阅读科技论文

EndNote X8 汉化版

EndNote X8 新功能简介

推荐25个搜索下载电子书籍的好地方