为什么wordpress在修改固定链接后,总显示NotFound的问题

最近一直很苦恼,为什么wordpress 列表页分页打不开,找了很多资料,都没有切合的,在群里问朋友,朋友们有说服务器有问题的,有说主题有问题的,有说函数有问题的,还有人说自定义结构有问题的。

有的时候,有出现分页,可是下一页的时候还是显示第一页的内容,还有就是随便点击一篇文章,显示总是出现404页面,想摧毁世界的心都有了,冲动归冲动,处理事情还是要冷静下来,找原因,为什么会这样呢?

今天终于找到了问题的解决方法,原来是自定义结构中出了问题,原来自定义结构为:/%category%/%post_id%,现在改为了:/%category%/%post_id%.html,

第一个问题,其实很好解决:在固定链接那里设置成自定义形式的,如下图:

xx01

参考链接:http://jingyan.baidu.com/article/2d5afd699ed5e085a3e28e10.html

第二个问题,我不多说,这是个伪静态的问题,我也是折腾好久才搞定的,后来,我发现我忽略了一个问题,那就是要让Apache支持mod_rewrite模块,而我并没有在Apache的配置文件中开启,不得不说小白很苦逼,废话少说,给后面的小白们来点实际的:

开启Mod_rewrite模块方法:

1、直接打开apache\conf\httpd.conf

2、搜索 LoadModule rewrite_module modules/mod_rewrite.so (可能版本不一样这个不一样,不过Apache2都是这个),去掉前面的#

3、 搜索AllowOverride None 替换为 AllowOverride All.

保存文件-》重启Apache-》刷新站点

关于Mod_rewrite

mod_rewrite这个模块是如何工作的呢?

mod_rewrite截获符合特定条件的URL,并按照设定的规则将它们改写成需要的URL。

比如,可以将 http://www.mysite.com/product.php?pid=123312 这样的URL改写成
http://www.mysite.com/product-123312.html 这样的静态URL

重写的规则

重写的规则的表达式:RewriteRule 模式 替换 [选项]

RewriteRule 是一个简单的命令告诉mod_rewrite这个模块如何去重写,关键的地方在于可以在模式和替换中使用正则表达式来匹配相应的字符,正则表达式的广泛的灵活性能将动态的URL转换成各式各样的符合要求的静态URL。看看这个重写规则:RewriteRule /products/([0-9]+)/fancy/products.php?id=$1

当你在浏览器地址栏输入 http://www.mysite.com/product/123 时,这个地址被重写为 http://www.mysite.com/fancy/product.php?id=123

这样,访问者就无法知道你的程序真正放在那个目录,程序的真正名字是什么,这也提高了网站的安全系数;这样的URL也去掉了?=这些字符,易于搜索引擎的机器人爬行你的网站。

通过正则表达式,可以写出更复杂的重写规则:RewriteRule ^/products$ /content.php

RewriteRule ^/products/([0-9]+)$ /content.php?id=$1
RewriteRule ^/products/([0-9]+),([ad]*),([0-9]{0,3}),([0-9]*),([0-9]*$)

重写规则的选项有

      • ‘forbidden’ 或 ‘f’ – 403 禁止
      • ‘gone’ 或 ‘g’ – 410 gone
      • ‘nocase’ 或 ‘NC’ – 大小写敏感
      • ‘next’/N’ – 回到第一条规则
      • ’skip=N’ 或 ‘S=N’ – 跳过下面的N条规则

参考地址:http://www.haodaima.net/art/2796025

 

未经允许不得转载:哈勃私语 » 为什么wordpress在修改固定链接后,总显示NotFound的问题

本文共1604个字 创建时间:2015年8月8日12:46   

分享到:更多 ()