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