|
|
|
|
|
今天有群友提到,他的 .htaccess
里設置的 ErrorDocument
無效,404跳不到指定的網頁。代碼如下:
ErrorDocument 404 /404.html
ErrorDocument 設置404無效
看到群友的提問,根據我的經驗,很可能是該群友的Apache設置文件 httpd.conf
沒有設對。最后在我的指引下,他成功解決了這個問題。
設置方法如下:
打開 httpd.conf
,此文件在Apache的安裝目錄下。
然后找到網站根目錄的 Directory
,再把里面的 AllowOverride None
改為 AllowOverride All
。如下圖所示:
設置 AllowOverride
如果沒有找到網站根目錄的這個Directory
,則自己可加上一個,設置方法同上。
設置完畢,不要忘了重啟Apache,以使設置生效。
經過上述設置,.htaccess
的 ErrorDocument
404跳轉就沒問題了。
在實際應用中,我們只用一個錯誤文件 error.php 來返回不同狀態(tài)顯示的錯誤提示,而不需要專門制作多個不同的提示文件,維護更加簡單。
.htaccess代碼如下:
ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 500 /error.php
ErrorDocument 502 /error.php
ErrorDocument 504 /error.php
error.php代碼如下:
<?php
switch($_SERVER["REDIRECT_STATUS"]){
case 400:
$title = "400 Bad Request";
$description = "請求錯誤";
break;
case 401:
$title = "401 Unauthorized";
$description = "請求認證失敗";
break;
case 403:
$title = "403 Forbidden";
$description = "請求被禁止";
break;
case 404:
$title = "404 Not Found";
$description = "找不到文件";
break;
case 500:
$title = "500 Internal Server Error";
$description = "內部服務器錯誤";
break;
case 502:
$title = "502 Bad Gateway";
$description = "網關錯誤";
break;
case 504:
$title = "504 Gateway Timeout";
$description = "請求超時";
break;
}
?>
當然你可以使用更具個性的錯誤提示,上面代碼僅供參考。