PHP - header()重定向:Firebug记录404 - 为什么?

时间:2013-02-21 19:40:24

标签: php redirect header http-headers firebug

我在我的一个项目中使用PHP重定向。我是这样做的:

header( 'Location: http://domain.net/?cig=warn&onum=' . $onum . '&cnum=' . $cnum . '&c=' . $c . '#Form' );

所以你看,这是PHP的header()函数的正常使用,其中一些变量包含在URL中。
它正在运行,但是使用Firebug测试页面,我在控制台中收到此错误:

"NetworkError: 404 Not Found - http://domain.net/?cig=warn&onum=12&cnum=73&c=ui#Form"

我的方式实际上有什么问题,或者这只是Firebug因为所有参数和锚点而挑剔?

1 个答案:

答案 0 :(得分:0)

由于此页面位于WordPress环境中,因此必须在发送标头之前手动设置200状态代码(使用WordPress status_header()功能):

<?php
// This must appear before any output is sent!
status_header(200);
?>

显然,你必须拉入WordPress功能才能实现这一点。问题是WordPress在您的页面有机会处理它之前拦截了请求。它无法找到“页面”并设置404响应代码,这最终会被发回。

当我过去必须使用WordPress功能时,我已经通过在页面上包含这两行来完成:

define('WP_USE_THEMES', false);
require_once("/path/to/my/site/wp-blog-header.php");

现在,那就是说,我过去所做的这些页面与我的WordPress安装中的页面具有相同的外观和感觉。可能有一种更好的方法来单独使用这些功能;你必须查阅WordPress文档才能找到(我不知道是否有)。如何正确地做到这可能是WordPress StackExchange site的一个好问题。