簡體   English   中英

Index.php作為自定義錯誤頁面

[英]Index.php as custom error page

我正在使用Apache 2.2.X和PHP 5.2.X(作為Apache模塊安裝)來構建新網站,並且我想閱讀您有關如何處理服務器錯誤的建議。
我正在考慮使用主頁(/index.php)的相同文件顯示自定義錯誤消息。 這是我的.htaccess設置:

ErrorDocument 400 /index.php?error=400
ErrorDocument 401 /index.php?error=401
ErrorDocument 403 /index.php?error=403
ErrorDocument 404 /index.php?error=404
ErrorDocument 500 /index.php?error=500

現在,在我的index.php文件中,我有一些看起來像這樣的代碼:

if (isset($_GET['error']))
    DrawErrorPage($_GET['error']);
else
    DrawHomepage();

一切都像魅力。
好吧,除了一件我無法解決的事情以外,所有一切:如果我強迫Apache用500狀態代碼進行響應(例如,將格式錯誤的代碼插入到我的.htaccess中),我是否不會被重定向到“ /index.php? error = 500“,但是我得到了默認的500錯誤頁面。 使用任何其他狀態代碼(例如403或404),我的配置都可以完美地工作。

但是現在我有一個疑問,我開始認為最好使用另一個頁面來處理錯誤(例如,“ / error.php”)。
“ DrawHomepage()”需要將“機器人”元標記設置為“索引,跟隨”,而“ DrawErrorPage()”需要將其設置為“ noindex,nofollow”。 對? 那么...如果網絡爬蟲第一次收到訪問我的主頁的錯誤響應會怎樣? 如果某個網絡爬蟲第一次使200個訪問我的主頁,但一個月后又有500個訪問我的主頁,將會發生什么? 如果我在顯示錯誤的情況下仍將“機器人”元標記保持為“索引,跟隨”,將會發生什么情況?

是否有解決此問題的解決方法? 你會怎么做?

非常感謝!

通常,如果狀態碼為500,則Apache搞砸了一些東西, 它無法運行您的index.php文件,從而產生了500狀態碼。 Apache繼續執行此錯誤循環幾次迭代,然后最終說“不再循環”並發送自己的錯誤頁面。

顯示500狀態代碼的自定義頁面的唯一真正安全的方法是使用純文本或使用基本的.html或.shtml文件,它們不會嘗試訪問服務器上的其他內容,因此您不會一直觸發頁面加載中有500多個狀態代碼。

通常,如果某個搜尋器遇到500,它只會暫時忽略該頁面。 500個代碼是可恢復的,這不一定意味着那里沒有頁面,只是此時服務器已混亂。 僵屍程序很聰明,只要頁面始終在頁面標題中發送狀態代碼,它們就可以確定什么錯誤代碼意味着什么。

請記住,如果將PHP文件用作錯誤文檔,則需要使用PHP內的標頭功能重新發送HTTP狀態代碼,以確保正確的頁面檢測,如下所示:

header("HTTP/1.1 404 Page Not Found");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM