使用PHP和.htaccess强制404不起作用

wil*_*age 11 php .htaccess redirect http-status-code-404

我试图在PHP中抛出自己的404,具体取决于某些GET变量.但以下是行不通的.我可以确认pge标题回来时带有'404状态代码'..htaccess似乎没有正确重定向.我错过了什么吗?

PHP代码:

if(!$_GET['page']){
    header('HTTP/1.0 404 Not Found');
}
Run Code Online (Sandbox Code Playgroud)

.htaccess代码:

ErrorDocument 404 /404.html
Run Code Online (Sandbox Code Playgroud)

非常感谢!

Mar*_*c B 13

就Apache而言,它已经完成了它的工作,因为它已经正确地找到了用户请求所要求的页面/脚本.脚本输出404标头的事实与Apache无关,因为它的工作已正确完成.

您需要让PHP脚本输出404标头,并包含Apache 404处理程序指向的页面:

if (!$_GET['page']) {
    header('HTTP/1.0 404 Not Found');
    include('404.html');
    exit();
}
Run Code Online (Sandbox Code Playgroud)

不要重定向到404页面,因为它只是将命中转换为正常的GET请求,结果为200 OK.