2012-12-01 36 views
1

我已經在我的ubuntu機器上安裝了apache2。當我需要使用子工作,我創建了一個正確的入口網站,提供它看起來像這樣:如何爲400錯誤啓用ErrorDocument?

<VirtualHost *:80> 
ServerName xxx.localhost 
DocumentRoot /var/www/ 
</VirtualHost> 

我也啓用了mod_rewrite(在我的網站可用/默認文件更改設置「AllowOverride全部」),但其他比沒有其他改變。

我的.htaccess文件確實有效,我想處理一些錯誤代碼。這樣做與404一起工作得很好,但由於某種原因,其他錯誤似乎不起作用。我最感興趣的是處理錯誤400:

ErrorDocument 400 /400.php 
ErrorDocument 404 /404.php 

還有什麼我應該看看?我似乎無法找到任何允許使用404的地方,而其他錯誤代碼則不允許。

+0

什麼觸發了'400'狀態代碼?你的後端?畸形的請求? – aefxx

+0

是的,我有一些驗證輸入參數的PHP腳本。如果發生錯誤,則發出標題(400)。 – Dan

回答

1

Apache documentation

雖然大多數錯誤消息可以被覆蓋,存在內部消息而不管使用的ErrorDocument的設定一定的情況下。特別是,如果檢測到格式錯誤的請求,正常請求處理將立即停止並返回內部錯誤消息。這對於防止由於不良請求導致的安全問題是必要的。

嘗試直接將其添加到httpd.conf並重新啓動Apache。

+0

剛剛嘗試過,但沒有任何區別。 – Dan

+0

'上下文:\t服務器配置,虛擬主機,目錄,.htaccess',所以把它放入.htaccess應該工作。 – Gerben

3

如果PHP返回400錯誤,那麼PHP應該生成錯誤文檔。

使用類似:

if($someError) 
{ 
    http_response_code(400); 
    include("{$_SERVER['DOCUMENT_ROOT']}/400.php"); 
    exit(); 
}