技術頻道導航
HTML/CSS
.NET技術
IIS技術
PHP技術
Js/JQuery
Photoshop
Fireworks
服務器技術
操作系統
網站運營

贊助商

分類目錄

贊助商

最新文章

搜索

htaccess ErrorDocument 404設置無效的原因

作者:admin    時間:2018-1-29 15:51:14    瀏覽:

今天有群友提到,他的 .htaccess 里設置的 ErrorDocument 無效,404跳不到指定的網頁。代碼如下:

ErrorDocument 404 /404.html

 ErrorDocument 設置404無效

ErrorDocument 設置404無效

看到群友的提問,根據我的經驗,很可能是該群友的Apache設置文件 httpd.conf 沒有設對。最后在我的指引下,他成功解決了這個問題。

設置方法如下:

打開 httpd.conf ,此文件在Apache的安裝目錄下。

然后找到網站根目錄的 Directory ,再把里面的 AllowOverride None 改為 AllowOverride All 。如下圖所示:

設置 AllowOverride

設置 AllowOverride

如果沒有找到網站根目錄的這個Directory,則自己可加上一個,設置方法同上。

設置完畢,不要忘了重啟Apache,以使設置生效。

經過上述設置,.htaccessErrorDocument 404跳轉就沒問題了。

用error.php返回錯誤提示

在實際應用中,我們只用一個錯誤文件 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;
}
?>

當然你可以使用更具個性的錯誤提示,上面代碼僅供參考。

標簽: apache  404  ErrorDocument  htaccess  
x