网站遇到404错误,很容易让人摸不到头脑。这时,可以借助一些工具帮助我们寻找原因。WordPress开启pretty permalink后,会在.htaccess写入一些规则,使得如果找不到请求的文件或目录,就定向到index.php,再根据数据库记录的rewrite rules去匹配。所以404错误要么是真的不存在,要么就是规则匹配错误。后者可以通过工具来debug。
目录
Rewrite Rules Inspector
推荐一个插件——Rewrite Rules Inspector,这款插件功能很简单:
- 列出所有的重定向规则
- 可以告诉你某个url会被哪些规则匹配
有了这个工具的帮忙,就可以找出404的地址究竟被哪条规则匹配,规则有优先级高低,只要被匹配到,就不会继续向下查找了,你可以根据给出的结果调整规则的顺序,或者移除一些规则,来修复404错误。
如何向WordPress中添加规则
典型代码如下
function custom_rewrite_rules(){ add_rewrite_rule('^nutrition/([^/]*)/([^/]*)/?', 'index.php?page_id=12&food=$matches[1]&variety=$matches[2]','top'); } add_action( 'init', 'custom_rewrite_rules' );
需要到后台设置的固定连接下重新保存固定链接格式才能生效。
如何移除规则
add_filter('rewrite_rules_array', 'kill_feed_rewrites'); function kill_feed_rewrites($rules){ foreach ($rules as $rule => $rewrite) { if ( preg_match('/^foo.*(feed)/',$rule) ) { unset($rules[$rule]); } } return $rules; }
什么是WordPress Rewrite Rules
推荐这篇文章,讲解很到位。
sola,好久没来你这里啦。现在博客人气比以前兴旺不少哦,恭喜哈!有个问题想请教下,最近想用VPS搭建个VPN自己用,但对速度要求比较高,价格无所谓。你知道国外哪家主机商的VPS比较快吗?或者哪家的云服务器?
抱歉,主机不是我的专业所在。我只用过godaddy和hostgator的vps及独立主机,性能很好,godaddy的提供管理服务,hostgator的只能自己管理,但会预装whm。但国内访问速度不敢保证,不知道为什么,这两家的vps和独立主机比它们的共享主机更容易被屏蔽,我用过的几个全部都有被屏蔽的现象。
bluehost也提供vps服务,有个客户在用,暂时看来国内访问速度不不错。国外主机的国内访问速度,真是要看运气了。
非常感谢!
今天我搜过来,发现百度前面找不到你的首页了,怎么回事。
百度整天变来变去的,很正常啊,非盈利博客,宁可翻墙也不用百度的主,百度怎么收录就随它吧。
博主,你的主题,文章标题里,英文字体不太容易识别呀。。。
您的主题捆绑 WooCommerce 模板文件过时。。。。 2.16还好的 升级2.17提示这个 怎么才能更新主题的 WooCommerce 模板呢?
模版一般位于主题的woocommerce目录下,首先到WooCommerce->系统状态菜单下,找到模版那一项(最后一项),会告诉你哪些模版过时了。到插件的templates目录下找到这个模版,拷贝过来,再把主题做过的修改重新弄一遍。
具体的说明在这里http://speakinginbytes.com/2014/02/woocommerce-2-1-outdated-templates/
好的 幸好只有grouped.php过期了~ 没有“把主题做过的修改重新弄一遍”也可以正常工作
恩,我觉得也不是啥大问题,只要不报错一样用。
话说很少遇到404这样的错误~,不过如果以后遇到的话,倒是确实可以用一下这个插件。
出现很多missing
比如:
[^/]+/attachment/([^/]+)/wc-api(/(.*))?/?$ index.php?attachment=$1&wc-api=$3 missing
我该怎么办呢
只要没影响站点正常工作就无需理会。这规则是woocommerce的?
恩 对的 改过几次固定连接 是不是就是因为这个?
应该不是,这些规则是根据你网站的设置生成的,正常情况下保存多少遍都不会变。
我也不知道了。 反正很多missing 没关系的吧? 没关系我就这样放那了
只要网站运行正常,就不用在意,规则里有很多都用不到
ok~ 谢啦