我想重定向在URL中使用了錯誤的查詢字符串,以自定義錯誤頁,同時通過的.htaccess指令如何重定向錯誤的查詢字符串定製的errorPage + 404狀態
ErrorDocument 404 http://www.domain.com/404.php
給予404種狀態的用戶編輯:這不給404但302! 「http://www.domain.com」 導致重定向。就在本地路徑給出了404又見http://httpd.apache.org/docs/2.0/mod/core.html#errordocument
因此我決定,如果查詢字符串是無效的,如果因此請求接收的index.php做了一個腳本,給出了這樣的命令:
header("HTTP/1.0 404 Not Found");
但是這不通過.htaccess指令ErrorDocument重定向,但只是給訪問者一個404狀態。
當使用header("Location: 404.php")
時,您將獲得302狀態,使用header("Location: 404.php", true, 404)
時,狀態爲404,但不會轉到自定義404.php頁面。
現在我用
header ("Location: ", true, 404);
echo "The URL you use doesn't lead to an existing page, etc.";
但是,這不是原來的計劃......我怎麼會提出這樣在URL中使用了錯誤的查詢字符串將用戶重定向到自定義錯誤頁,同時還通過給404個狀態.htaccess指令ErrorDocument,或者這是不可能的?
實際上,你可以使用重寫規則返回[R = 404],就像您301/302在htaccess中重定向,但它聽起來像無效的查詢字符串邏輯最好在PHP中處理。但是,如果在htaccess中正確定義(並允許)ErrorDocument 404,則PHP 404頭應該足以顯示在htaccess中指向的自定義錯誤頁ErrorDocument – WebChemist 2012-08-14 06:46:11
我剛剛嘗試確保PHP不會重定向到404頁如果你只是發送一個404頭。你必須自己處理它。 – GordonM 2012-08-14 07:10:37
我懷疑我的計劃是不可能的,因爲.htaccess沒有被請求再次傳遞,因爲資源通過正在執行的PHP腳本來定位。你最後的建議對我來說看起來不錯,但是當我查看access.log時,狀態不是404而是302,它只是跳過它看起來的第一個標題命令。 @webchemist:在.htaccess中,我無法檢查查詢字符串是否有效,因爲頁面來自數據庫,並且.htaccess中的正則表達式無法通過檢索要比較的正確值來構建。 – 2012-08-14 07:30:05