最近更新:20th 1月, 2015
这个问题是几年前遇到的了,如今回过头再来看,当初的这个解决办法确实有些草率——因为我忽略了一个重要的因素,那就是编码问题。
按照这篇文章的办法解决之后确实好使——前提是你必须在博客内点击才有效,但是一旦你遇到了类似这样的抓取连接:
虽然点开之后浏览器的地址栏里显示的仍旧是中文,但此中文却早已非彼中文了。编码不同导致的直接结果就是——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) )
然后保存即可:)