404没有触发我的404。php模板。firebug中选中的标题状态代码是404,但显示的页面就像是一个包含0个项目的循环(好像这只是一个包含0个条目的归档页面)。
如果我的永久链接从/%年%/开始,然后我转到bla。com/9999(应生成404),WP Debug将请求显示为一年:
Request: 9999
Query String: year=9999
Matched Rewrite Rule: ([0-9]{4})/?$
Matched Rewrite Query: year=9999
如果我的永久链接以/%类别%/开始,然后我转到bla。com/zzzzz(应生成404),WP Debug将请求显示为category\\u名称:
Request: zzzzz
Query String: category_name=zzzzz
Matched Rewrite Rule: (.+?)/?$
Matched Rewrite Query: category_name=zzzzz
发生什么事了?Show Template插件(它打印一条html注释,告诉您用于呈现页面的模板)告诉我页面正在使用索引进行呈现。php模板。我怎样才能拿到404。要加载的php模板?
最合适的回答,由SO网友:supertrue 整理而成
我发现问题出在其他方面非常有用的插件上Legacy URL Forwarding.
它使用以下函数(此处缩写)和404_template
钩
function doUrlForwarding() {
// make a $query based on the $_SERVER[\'REQUEST_URI\']
// if a post is found, redirect to it
if (!empty($query->post->ID)) {
wp_redirect(get_permalink($query->post->ID), \'301\' );
}
}
add_action(\'404_template\',\'doUrlForwarding\');
当上述挂钩处于活动状态时,404。php不会被解雇。然而,如果我
doUrlForwarding
在404的顶部。php,它工作正常。
这就解开了谜团,但我仍然不知道为什么使用404\\u模板挂钩会阻止404。在普通404上加载php模板。如果你有想法,请发表评论。