http_response_code(200)不能与ErrorDocument 404一起使用

时间:2017-10-12 14:17:20

标签: php .htaccess header http-response-codes

我的php函数http_response_code()有问题。我已将ErrorDocument 404设置在我网站根目录下的htaccess文件中,以将每个错误的调用重定向到php文件。在这个php文件中,我想在某些情况下将响应的头设置为200 OK。但这并不奏效。 Chrome总是告诉我状态代码是404.

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

ErrorDocument 404 /abc.php

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

<?php   

http_response_code(200); 

?>

Test

如果我使用其他代码,例如201,301或其他什么,它的工作原理。只有200不起作用。

以下是示例的链接:http://test.foxpage.de/abdfgsdfgsdfgsdfgsdf

有人可以帮助我吗?

THX !!

2 个答案:

答案 0 :(得分:0)

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

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

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

see this answer了解详情。

答案 1 :(得分:0)

这在第一行有效:How can I replace Apache HTTP code 404 to 200

<?php header("Status: 200 OK"); ?>

此代码必须放在第一行代码的.php文件顶部。搜索引擎,搜寻器,浏览器以及访问该网站的任何人都将看到错误文档404页作为标头200。

标题200表示该页面存在。 Google将抓取标题为200的网站并将其编入索引。