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

1 星2 星3 星4 星5 星 (觉着不错就5星评价哦)

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

总起来说有两种方法

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

function get_tag_permastruct() {
if ( isset($this->tag_structure) )
return $this->tag_structure;
if (empty($this->permalink_structure) )
{ $this->tag_structure = ”;
return false;}

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

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

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

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

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

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,重新写。应该是这个出现了问题。我仔仔细细的看了看,虽然没有第一种方法所说的代码,但是代码如下情况

function get_category_permastruct() {
return $this->get_extra_permastruct('category');
}

/**
* Retrieve the permalink structure for tags.
*
* If the tag_base property has no value, then the tag structure will have
* the front property value, followed by 'tag', and finally '%tag%'. If it
* does, then the root property will be used, along with the tag_base
* property value.
*
* @since 2.3.0
* @access public
*
* @return bool|string False on failure. Tag permalink structure.
*/
function get_tag_permastruct() {
return $this->get_extra_permastruct('post_tag');
}

/**
* Retrieve extra permalink structure by name.
*
* @since 2.5.0
* @access public
*
* @param string $name Permalink structure name.
* @return string|bool False if not found. Permalink structure string.
*/
function get_extra_permastruct($name) {
if ( empty($this->permalink_structure) )
return false;

if ( isset($this->extra_permastructs[$name]) )
return $this->extra_permastructs[$name]['struct'];

return false;
}

 

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

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

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

 

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

相关文章

发表评论

您的电子邮箱地址不会被公开。