昨天博客换了个模板。模板本身还是有许多问题。但是修改代码之后还是有一些问题不好解决。之前就做过wordpress伪静态设置。以前的模板一直没有问题。但是用新模板之后就发现wordpress分类目录和tag标签打开显示404错误。这个问题搞的我头大,找了很久,在网上终于才发现了解决方法。
网上 解决办法如下:
解决分类目录和标签打开错误。
在wp-includs文件夹下面,找到rewrite.php文件,复制保存或者下载下来。保存一下,防止修改出处,万一出错了,可以覆盖还原。
3.3.1 以前的老版本的设置方法
然后用记事本打开rewrite.php
文件,找到这个函数名:function get_category_permastruct()
(大约在970行),代码如下。
functionget_category_permastruct(){ if(isset($this->category_structure)) return$this->category_structure; if(empty($this->permalink_structure)){ $this->category_structure=”; returnfalse; } if(empty($this->category_base)) $this->category_structure=trailingslashit($this->front.‘category’ ); else $this->category_structure=trailingslashit(‘/’ .$this->root.$this->category_base); $this->category_structure.=‘%category%’; return$this->category_structure; }
然后在这个下面找到
if(empty($this->permalink_structure))
把这个改为
if(!empty($this->permalink_structure))
注意,这里只加了一个英文‘!’解决了wordpress分类目录404错误的问题。
再找到这个函数function get_tag_permastruct()
(大约在986行),里面也有一个
if(empty($this->permalink_structure))
一样,还是改为
if(!empty($this->permalink_structure))
这里只加了一个英文‘!’解决了wordpress的tag标签404错误的问题。至此所有的问题都解决了,看看是不是很简单啊!
有些同学打开3.2.1版rewrite.php文件的时候,可能没有发现上述方法中的代码,而是如下的内容:
functionget_category_permastruct(){ return$this->get_extra_permastruct('category'); }
应该是对代码进行了优化。往下找,找到了function get_extra_permastruct($name)
,代码如下:
functionget_extra_permastruct($name){ if(empty($this->permalink_structure)) returnfalse; if(isset($this->extra_permastructs[$name])) return$this->extra_permastructs[$name][0]; returnfalse; }
对这段代码进行修改,添加个英文”!”即可,改为如下形式:
functionget_extra_permastruct($name){ if(!empty($this->permalink_structure)) returnfalse; if(isset($this->extra_permastructs[$name])) return$this->extra_permastructs[$name][0]; returnfalse; }
即把代码
if(empty($this->permalink_structure))
中的empty前加上英文的惊叹号“!”
上传覆盖掉原来的文件即可完美解决设置固定链接后分类目录和标签的404错误问题。
3.3.1 版本的设置方法
3.3.1 版本和3.3.1 版本以前的老版本设置方法还是一样的,只不过函数function get_category_permastruct()
和function get_tag_permastruct()
已经合并为一个了,如下:
functionget_category_permastruct(){ return$this->get_extra_permastruct('category'); } functionget_tag_permastruct(){ return$this->get_extra_permastruct('post_tag'); } functionget_extra_permastruct($name){ if(empty($this->permalink_structure)) returnfalse; if(isset($this->extra_permastructs[$name])) return$this->extra_permastructs[$name][0]; returnfalse; }
修改方法和上面的一样。只要修改一处即可,要修改的地方大约在第1000行。
保存上传到网站根目录,刷新或者重新打开网站。
以上是网上的解决办法.
我也安装这个办法去找到了rewrite.php修改。但是传上去之后网站页面虽然可以打开却改变了原来的伪静态url路径。
原来是
https://yusi123.com/category/*(分类别名)
变成了
https://yusi123.com/?cat=*(id)
我觉得这样不太好又改回来了。但是奇迹出现了。网站页面不仅可以正常打开而且和之前的url结构一模一样了。
(ps:我就纳闷了我啥也没修改怎么就好了呢,有知道为什么的朋友可以给我留言说明。网上找的那个解决办法大家可以一试,但是不敢保证一定可以。。)
评论10