当wordpress遇到中文分类目录,完美解决404!

这个问题是几年前遇到的了,如今回过头再来看,当初的这个解决办法确实有些草率——因为我忽略了一个重要的因素,那就是编码问题。

按照这篇文章的办法解决之后确实好使——前提是你必须在博客内点击才有效,但是一旦你遇到了类似这样的抓取连接:

http://www.logcg.com/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80

虽然点开之后浏览器的地址栏里显示的仍旧是中文,但此中文却早已非彼中文了。编码不同导致的直接结果就是——404!

难怪当时第一个评论回复的是无效呢!呵呵。

那么究竟该怎么解决呢?我想,最完美的办法恐怕还是使用别名的方式了,分类目录使用中文,但是WordPress还是提供了分类目录的别名选项,你可以将别名设置为拼音,或者英文简写,甚至干脆就是英文单词也是可以的,这样,就里外全部都兼容啦。


 

 

我猜这个问题应该是每个用wordpress都会遇到的吧?我居然这么久都没有发现,汗~

当wordpress遭遇中文分类目录的时候,就会出现404,而把分类改成英文就能够打开,这大概是因为页面静态化造成的吧。可是要把每一个分类都英文化这样又会让读者看着眼晕——谁喜欢鸟语啊哈哈

所以,还是找到了另一种解决办法,我用这个办法完美解决,主要是参考了这里

解决办法很简单,就是一个“!”的问题,好了,我们开始。

首先在你博客空间的wp-includs文件夹下面,找到rewrite.php文件,然后做一下备份,我们要修改的内容就在这里面。

接着打开已经备份过的rewrite.php,在大概1000行的地方找到如下内容,当然,代码之间灰色的注释你是应该忽略掉的呵呵。

function get_category_permastruct() {

return $this->get_extra_permastruct(‘category’);

}

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

}

function get_extra_permastruct($name) {
 if ( empty($this->permalink_structure) )
return false;

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

return false;
}

 

没错,我们要修改的就是 if ( empty($this->permalink_structure) )这一行,在empty前面添加一个英文的叹号,即

 if ( empty($this->permalink_structure) )

if ( !empty($this->permalink_structure) )

 

然后保存即可:)

“当wordpress遇到中文分类目录,完美解决404!”的13个回复

    1. 你说的不错,但如果是已经运行了好久的博客,再那样改我想不是一个小工程了,包括收录等等的都会收到影响。另外,有些分类还是写成中文比较好看……
      =。=毕竟,是中文博客哈哈:)

      当然了,如果是新博客,用这样的方法做好规划也是不错的!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.