2010-06-21 42 views
4

我正在創建一個PHP CMS並擁有一些系統頁面,如404頁面,維護頁面和未經授權的訪問頁面。當找不到頁面A時,CMS將重定向到404頁面;如果用戶沒有訪問網頁B,它會重定向到未經授權的訪問頁面等PHP重定向頭最佳實踐

我想用正確的狀態碼在每一頁的標題,但我需要澄清如何處理標題/重定向。我是否將404標頭放在頁面A上,然後重定向到404頁面,還是將404狀態放在404頁面上?另外,如果後者是正確的答案,那麼我應該用什麼樣的重定向到達301或302?

回答

6

如果用戶到達第A和頁面不存在,那麼不重定向:剛剛從網頁A發出一個404錯誤碼 - 和,成爲你的用戶不錯的,一個HTML內容表明頁面不存在。

這樣,瀏覽器(對於抓取工具更是如此!)將知道未找到的頁面是頁面A,而不是您嘗試重定向到的任何其他頁面。

同爲其他類型的錯誤,順便說一句:如果一個特定的URL相當於一個錯誤,那麼,錯誤代碼應當從該URL發送。


基本上,這樣簡單的東西應該足夠:

if (page not found) { 
    header("404 Not Found"); 
    echo "some nice message that says the page doesn't exist"; 
    die; 
} 

(嗯,你可以輸出的東西,當然更好;但你的想法;-))

+0

好的,這比我正在做的更有意義。謝謝,帕斯卡。 – VirtuosiMedia 2010-06-21 19:35:04

+0

爲什麼?你爲什麼這麼快? :'( – 2010-06-21 19:37:35

+0

@VirtuosisiMedia:不客氣:-) ;; @Oden:2的問題,我的答案分鐘之間,這不是** **那快^^ – 2010-06-21 19:40:06

1

我不確定重定向是否是執行此操作的最佳方式。而是使用一些內置於項目中的內置功能。

如果找不到數據,不要將用戶重定向到另一個網頁,只給他一個錯誤信息,如Hey, this site does not exists! Try an other one等。 而不是最後,你應該建立代碼,從帕斯卡爾馬丁的答案的代碼部分。

我會做這個成一個函數,並從自助或一些有類似的行爲調用它。

function show_error($type="404", $header = true, $die = false) 
{ 
    if($header) 
     header("404 Not Found"); 

    echo file_get_contents($type.'.php'); 

    if($die) die; // 
    // and so on... 
}