2017-10-12 111 views
0

我有一個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

回答

0

我認爲這是Apache的bug /功能。您無法直接從ErrorDocument覆蓋狀態碼爲200。

但是,我認爲這個黑客應該適合你,如果你可以在你的ErrorDocument上有一個永久的200響應(恕我直言,這有點嚇人,而機器人會討厭的東西)。

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

請詳細說明see this answer

+0

對不起,但我沒有想要一個永久的200狀態代碼,這很令人困惑,同樣的腳本工作得很好ctly在我本地的apache/php安裝但不是在我的web服務器:( – DocMacFoxx