這一點如何保證呢?如何才能爲網站設置能夠正常工作的404錯誤頁面?下面針對不同情況詳細介紹。
定製404錯誤頁面的基本原則
首先應明確的是,404錯誤應工作在服務器級而不是網頁級。對定製使用動態頁面如PHP腳本類型的404頁時,必須確保在PHP執行前服務器已經順利地送出“404”狀態碼,不然,一旦執行到了ISAPI級別,返回的狀態碼便只能是“200”或其他如“302”之類的重定向狀態碼了。
其次,無效鏈接有可能指向網站內的任何位置,因此,在定製網站的404錯誤頁面時,對其中的鏈接應使用絕對路徑而不是相對路徑。這點相信很容易理解,考慮一下“http://www.highdiy.com/a/a.html”與“http://www.highdiy.com/a.html”這樣兩個位於不同目錄深度的無效鏈接,當404錯誤頁中鏈接使用相對路徑時便會徹底亂套。
Apache下設置404錯誤頁面
爲Apache Server設置 404錯誤頁面的方法很簡單,只需在.htaccess 文件中加入如下內容即可:
ErrorDocument 404 /notfound.php
當然,把”/notfound.php” 改爲自定義404錯誤頁面的地址和名稱。
尤其需要注意的是,不要採取如下的方式:
ErrorDocument 404 http://www.highdiy.com/notfound.php
這樣設置則是錯誤的:其將返回“200”狀態碼而不是“404”。
另外,需要注意的是,如果您的.htaccess存在類似這樣的內容:
ErrorDocument 404 /index.php
切記要將其刪除:這種將404錯誤轉向到網站主頁的作法存在極大的風險,嚴重時會導致主頁在搜索引擎中消失。
IIS/ASP.net下設置404錯誤頁面
IIS/ASP.net一直是404頁面不能正確返回“404”狀態碼的重災區,尤其對動態網頁而言,很多網站在使用IIS管理器設置404自定義錯誤頁面後發現其返回碼卻是“302” + “200”。
在IIS/ASP.net下設置404動態頁面
首先,修改應用程序根目錄的設置,打開 “web.config” 文件編輯,在其中加入如下內容:
<configuration>
<system.web>
<customErrors mode=”On” defaultRedirect=”error.asp”>
<error statusCode=”404″ redirect=”notfound.asp” />
</customErrors>
</system.web>
</configuration>
注:上文例中“error.asp”爲系統默認的404頁面,“notfound.asp”爲自定義的404頁面,使用時請修改相應文件名。
然後,在自定義的404頁面“notfound.asp”中加入:
<%
Response.Status = “404 Not Found”
%>
這樣,便可以保證IIS能夠正確地返回“404”狀態碼。
注:爲顯示方便,上文代碼中使用的是全角的“<”與“>”,應用時應將其改爲半角字符。
在IIS/ASP.net下設置404靜態頁面
設置靜態404錯誤頁面的方法則比較簡單,在IIS管理器中右鍵單擊要管理的網站,打開“屬性”中的“自定義錯誤信息”頁,爲“404”設定相應的錯誤信息頁即可。不過,此處在“消息類型”中一定要選擇“文件”或“默認值”,而不要選擇“URL”,不然,將導致返回“200”狀態碼。
當然,在設置完成後,最好用Server Header檢查工具檢查一下設定是否正確。