在架設網站時如果遇到錯誤通常是越清楚越好
所以會在伺服器上設定輸出除錯資訊以方便我們除錯
但是在公開的網站上
為了避免透漏過多資訊造成漏洞的產生
我們會將資訊隱藏
來避免洩漏資訊給有心人士
在Apache就可以做這樣的設定
我們可以依照自己的需求來設定當遇到什麼錯誤時要有什麼輸出資訊
可以是很含糊地、也可以把所有資訊列出來
全看自己需求而定
只要在Acache的主設定檔修改即可
vim /etc/httpd/conf.d/httpd.conf
找到#ErrorDocument 403的地方
# ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
# ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
# ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
# ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
在上面看到的就是預設的輸出內容
此時只要將註解刪掉
就可以讓自己的設定生效了
如果在設定檔上沒有找到
也可以自己新增
錯誤訊息的設定方式有三種
第一種
直接顯示文字訊息
ErrorDocument 404 "欲顯示出來的錯誤訊息文字"
遇到錯誤輸出時就只會有"欲顯示出來的錯誤訊息文字"這行字
第二種
顯示自訂的錯誤頁面
要先寫好一個網頁頁面如404.html
然後在主設定檔中修改成
ErrorDocument 404 /404.html
遇到錯誤就會顯示404.html這個頁面囉!
第三種
顯示外部網站的錯誤頁面
ErrorDocument 404 http://www.example.com/404.html
遇到錯誤就會轉址到www.example.com/404.html
並顯示其中的畫面啦!
設定之後也是重新啟動服務就可以讓設定生效啦~
在下面也列出常見的錯誤訊息
讓大家方便設定
ErrorDocument 400 HTTP_BAD_REQUEST 錯誤的要求
ErrorDocument 401 HTTP_UNAUTHORIZED 未授權的動作
ErrorDocument 403 HTTP_FORBIDDEN 該動作禁止存取
ErrorDocument 404 HTTP_NOT_FOUND 找不到檔案或目錄
ErrorDocument 405 HTTP_METHOD_NOT_ALLOWED 系統不允許該要求的方法
ErrorDocument 408 HTTP_REQUEST_TIME_OUT 要求的動作超過伺服器的等待時間
ErrorDocument 412 HTTP_PRECONDITION_FAILED 先決條件失敗
ErrorDocument 413 HTTP_REQUEST_ENTITY_TOO_LARGE 要求的實體太大
ErrorDocument 414 HTTP_REQUEST_URI_TOO_LARGE 要求的URI太長
ErrorDocument 415 HTTP_UNSUPPORTED_MEDIA_TYPE 不支援的媒體格式
ErrorDocument 500 HTTP_INTERNAL_SERVER_ERROR 內部伺服器錯誤
ErrorDocument 501 HTTP_NOT_IMPLEMENTED 未執行的錯誤
ErrorDocument 502 HTTP_BAD_GATEWAY 不正確的閘道
ErrorDocument 503 HTTP_SERVICE_UNAVAILABLE 伺服器可能忙碌中故無法回應
如果正在開發階段
可以自行編寫網頁來顯示錯誤內容外
也可以引入相關的紀錄檔
方便我們除錯
詳細的網頁伺服器錯誤代碼可以看w3c的伺服器錯誤訊息代碼說明文件:https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html