2014-01-26 37 views
0

這應該是一個簡單的問題,但我遇到了麻煩:我如何讓PHP觸發404錯誤,以便用戶看到的頁面有一個真正的404頭?我已經看到了幾個答案,但沒有人爲我工作,也許是因爲我在nginx上。我試過了:php如何在nginx上觸發404錯誤?

header("Status: 404 Not Found"); 
header("HTTP/1.0 404 Not Found"); 

當我嘗試了其中的每一個(之後使用exit())時,服務器發送了200頭。

似乎這個問題已經被問到許多變化(Apache/php /從服務器級別發送404s等),但我很難找到有人試圖做我想做的事情。所以,如果這是重複的道歉,如果這是我不會感到驚訝,請讓我知道。

謝謝:) - 凱蒂

+0

你可以看看這裏,http://www.php.net/manual/en/function.http-response-code.php'如果你沒有傳遞任何參數,那麼http_response_code將得到當前狀態碼。如果你傳遞一個參數,它將設置響應代碼。' –

+0

第二個'header'應該根據文檔工作。 – Barmar

+1

@Shankar - 我在php 5.3上,所以這是一個不行,尋找替代品,以及如何更新php。 – heykatieben

回答

1

這是什麼工作:

步驟1,處理在PHP中:

header("HTTP/1.0 404 Not Found"); 
exit(); 

步驟2,刪除Nginx的錯誤頁面。我有:

error_page 404 = /404.shtml; 

隨着這些的組合,404s根據需要生成。

謝謝@Barmar和@Patrick Evans對於這個解決方案的每一塊! :)