2013-05-08 64 views
-2

我目前正在嘗試配置我的服務器,以便任何缺失的頁面在404自定義頁面上優雅地出錯。不幸的是,一切似乎都是500內部服務器錯誤。 (不使用.htaccess)是否在我的服務器Apache 500錯誤配置

我的站點設置爲:

AllowOverride All 

RewriteEngine On 
ErrorDocument 404 /404.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)$ $1.php [L] 

如果我鍵入domain.com/missingpage - 我得到的是一個500錯誤。真的很感謝這裏的指導。謝謝

+0

每500錯誤的結束伴隨着在一條線上發生重寫錯誤日誌解釋了錯誤。錯誤日誌說什麼? – Charles 2013-05-08 21:59:47

+0

@Charles「由於可能的配置錯誤,請求超過了10個內部重定向的限制。如果需要,使用'LimitInternalRecursion'來增加限制,使用'LogLevel debug'來獲得回溯。 - 它似乎是循環的,而不是在10時優雅地失敗,它正在死亡和錯誤。 – 30secondstosam 2013-05-08 22:03:51

+0

如果註釋掉ErrorDocument指令,它會工作嗎?如果你直接訪問404.php,你會得到正確的結果嗎?如果您訪問存在的其他PHP腳本,會發生什麼情況? – Charles 2013-05-08 22:39:12

回答

1

Asume你正在訪問/misssing-page在您的服務器上。它不是一個文件,也不是一個目錄,所以它被重寫爲/misssing-page.php。它現在看起來更像是一個文件,但仍然不存在於服務器上,所以對於apache,它仍然不是文件或目錄,並且它正在被重寫爲​​。這會在您的日誌中說明10次,並導致內部服務器錯誤。

所以你缺少一個條件,是這樣的:

RewriteCond %{REQUEST_URI} !.php$ 

所以只會在有.php在請求的URI

+0

絕對完美的結果!非常感謝 – 30secondstosam 2013-05-09 11:27:50