在PHP中有沒有辦法捕獲404找不到?
如果用戶在404上結束,我希望他們被重定向到一個已知頁面,但是如果是由於404錯誤導致顯示不同的內容。
喜歡的東西
if($_SERVER['HTTP_REFERER'] == 404){
echo("You've been redirected!");
}
在此先感謝
在PHP中有沒有辦法捕獲404找不到?
如果用戶在404上結束,我希望他們被重定向到一個已知頁面,但是如果是由於404錯誤導致顯示不同的內容。
喜歡的東西
if($_SERVER['HTTP_REFERER'] == 404){
echo("You've been redirected!");
}
在此先感謝
PHP只給出路徑,向您推薦當前頁的頁面時,它無法檢索該頁面的狀態代碼。
您不應該需要重定向頁面指定的頁面不存在時。在Apache中,您可以指定ErrorDocument爲PHP文件,只需在文件中追加一個查詢字符串,例如ErrorDocument /index.php?error=404
,以便您的PHP文件知道所請求的頁面不存在。這樣,您可以在同一頁面上直接向用戶顯示錯誤,並且URL不會丟失。您不需要會話或服務器變量,只需要$_GET['error']
即可檢查是否存在提供給頁面的錯誤代碼。
或者,您可以指定一個預構建的文檔,該文檔只是一個404錯誤頁面,例如ErrorDocument my404error.html
,它將在沒有找到任何頁面的服務器端處理的情況下顯示。
請不要重定向錯誤,除非它是永久性的,例如移動到其他網址的頁面。對於真正的錯誤重定向是非常煩人的,因爲你例如不能輕易地修正網址中的錯字或點擊F5。 – ThiefMaster
我在想,如果頁面沒有找到,設置一個標誌,說它導致了404,然後重定向到一個搜索頁面,說'我找不到+查詢',但嘗試搜索等。這是一個壞主意? – Cristian
@ThiefMaster,'mod_rewrite'或其他加載另一個頁面而不更改地址欄的方法,例如'require'。 – FakeRainBrigand