我正在創建一個PHP CMS並擁有一些系統頁面,如404頁面,維護頁面和未經授權的訪問頁面。當找不到頁面A時,CMS將重定向到404頁面;如果用戶沒有訪問網頁B,它會重定向到未經授權的訪問頁面等PHP重定向頭最佳實踐
我想用正確的狀態碼在每一頁的標題,但我需要澄清如何處理標題/重定向。我是否將404標頭放在頁面A上,然後重定向到404頁面,還是將404狀態放在404頁面上?另外,如果後者是正確的答案,那麼我應該用什麼樣的重定向到達301或302?
我正在創建一個PHP CMS並擁有一些系統頁面,如404頁面,維護頁面和未經授權的訪問頁面。當找不到頁面A時,CMS將重定向到404頁面;如果用戶沒有訪問網頁B,它會重定向到未經授權的訪問頁面等PHP重定向頭最佳實踐
我想用正確的狀態碼在每一頁的標題,但我需要澄清如何處理標題/重定向。我是否將404標頭放在頁面A上,然後重定向到404頁面,還是將404狀態放在404頁面上?另外,如果後者是正確的答案,那麼我應該用什麼樣的重定向到達301或302?
如果用戶到達第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;
}
(嗯,你可以輸出的東西,當然更好;但你的想法;-))
我不確定重定向是否是執行此操作的最佳方式。而是使用一些內置於項目中的內置功能。
如果找不到數據,不要將用戶重定向到另一個網頁,只給他一個錯誤信息,如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...
}
好的,這比我正在做的更有意義。謝謝,帕斯卡。 – VirtuosiMedia 2010-06-21 19:35:04
爲什麼?你爲什麼這麼快? :'( – 2010-06-21 19:37:35
@VirtuosisiMedia:不客氣:-) ;; @Oden:2的問題,我的答案分鐘之間,這不是** **那快^^ – 2010-06-21 19:40:06