2017-05-03 80 views
0

如果我敲錯了網址爲我的網站之一,並有意拉漲400錯誤的請求,我得到這個消息:400錯誤的請求沒有找到定義404錯誤頁面

壞請求

您的瀏覽器發送了此服務器無法理解的請求。 此外,嘗試 使用ErrorDocument來處理請求時遇到404未找到錯誤。

這是標準和預期,但我有一個404頁的設置和使用的.htaccess定義:

ErrorDocument 400 http://www.mywebsite.com/error 
ErrorDocument 403 http://www.mywebsite.com/error 
ErrorDocument 404 http://www.mywebsite.com/error 

爲什麼沒有在瀏覽器上一個400錯誤認識到這一點?

我的404頁面在輸入不存在的URL時正在工作。

回答

0
ErrorDocument 404 http://www.mywebsite.com/error 

你不應該絕對URL定義ErrorDocument指令。這樣做會觸發外部3xx重定向到錯誤文檔,而不是內部子請求(推薦)。通過觸發外部重定向,您將失去與觸發錯誤的文檔相關的所有服務器變量(狀態碼,請求的URL等)。

但是,這可能會或可能不會與您當前的查詢有關。

您在.htaccess文件中是否有例外情況允許無條件訪問您的錯誤文檔?

0

假設您在根目錄中有錯誤頁面。
如果您在php/html中查看此內容,並且您有條件不在URL中顯示文件擴展名,那麼您的.htaccess應該如下所示。

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*)$ $1.php [L] 
RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule ^(.*)$ $1.html [L] 
ErrorDocument 404 http://www.mywebsite.com/error 

(或)

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*)$ $1.php [L] 
RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule ^(.*)$ $1.html [L] 
ErrorDocument 404 http://www.mywebsite.com/error.php(error.html) 

否則,如果你是顯示在URL中的文件擴展名,那麼它應該是類似下面

ErrorDocument 404 http://www.mywebsite.com/error.File Extension 
Example php error file: ErrorDocument 404 http://www.mywebsite.com/error.php 

讓我知道,如果問題是修復並接受我的回答。