为什么404没有触发我的404.php模板?

时间:2011-09-07 作者:supertrue

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模板?

1 个回复
最合适的回答,由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模板。如果你有想法,请发表评论。

结束

相关推荐

Enable page templates. How?

基本问题,但我想启用页面模板。我有一个启用了页面模板的主题。我切换到了另一个模板,但没有更改模板的选项,即使在创建新页面时也是如此。如何打开此选项?我在抄本和论坛上找到了根,但找不到。