我在我的一个项目中使用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因为所有参数和锚点而挑剔?
答案 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的一个好问题。