http_response_code(200)不能使用ErrorDocument 404

问题描述:

我有一个PHP函数http_response_code()的问题。我在我的网站的根目录下的htaccess文件中设置了ErrorDocument 404,以将每个错误的调用重定向到一个php文件。在这个PHP文件中,我想在某些情况下将响应头设置为编码200 OK。但这不起作用。 Chrome浏览器总是对我说,状态代码是404http_response_code(200)不能使用ErrorDocument 404

这是我的.htaccess文件的内容:

ErrorDocument 404 /abc.php 

这是我简单abc.php文件的内容:

<?php 

http_response_code(200); 

?> 

Test 

如果我使用另一个代码,例如201,301或其他东西,它的工作原理。只有200不工作。

这里是一个例子链接:http://test.foxpage.de/abdfgsdfgsdfgsdfgsdf

有人能帮助我吗?

Thx !!

+0

你使用任何框架? –

+0

否。对于测试案例,我仅创建了2个测试文件,其中包含您在上面看到的内容。它不起作用。 – DocMacFoxx

+0

它可以是apache conf或php.ini中的设置吗? – DocMacFoxx

我认为这是Apache的bug /功能。您无法直接从ErrorDocument覆盖状态码为200。

但是,我认为这个黑客应该适合你,如果你可以在你的ErrorDocument上有一个永久的200响应(恕我直言,这有点吓人,而机器人会讨厌的东西)。

Redirect 200 /abc.php 
ErrorDocument 404 /abc.php 

请详细说明see this answer

+0

对不起,但我没有想要一个永久的200状态代码,这很令人困惑,同样的脚本工作得很好ctly在我本地的apache/php安装但不是在我的web服务器:( – DocMacFoxx