我管理的一个Wordpress网站偶尔会遇到一个问题,即所有帖子/页面/所有信息都进入404。每次刷新这样的永久链接都会解决此问题,并且用户永远不会看到404:
add_action('template_redirect', 'flush_rewrite_rules_on_404');
function flush_rewrite_rules_on_404() {
if( is_404() ) {
flush_rewrite_rules();
}
}
我的日志显示刷新在页面上以及页面上的每个图像上运行。
如果用户访问的URL不存在(例如www.mywebsite.com/mispelled-uri),则仍然会发生刷新。如果我想限制刷新,以使其仅出现在404的合法页面上(例如,检查REQUEST_URI中是否包含有效的词条和post_names),那么我需要刷新页面1-3次才能运行该代码,并且使404消失,而不是获得我从上面的代码示例中获得的无缝性能。
为什么仅在IF()块中添加一个额外的检查就导致如此大的性能问题?
我该如何解决?
(我们花了几天时间来解决原始错误;我们已经看过所有页面,上面写着“您更新/安装/卸载插件了吗?主题?从备份中还原数据库?”这些都不是问题,并且当有其他事情要做时,客户不愿意在此上花费更多的时间)