2012-07-16 72 views
1

我已經搜索了很多,但仍然找不到方法來實現我的目標。現在我甚至認爲這是不可能的。是嗎?用重定向到主頁來處理404錯誤的最佳方法

我想404錯誤正確,所以我必須在.htaccess文件ErrorDocument 404 /404.php處理的,我要發出正確的標題搜索引擎header("HTTP/1.1 404 Not Found")忘記頁面,我想我的訪問者重定向到/index.php?code=404所以我可以通知他有關他正在尋找的東西不可用,但仍然讓他在網站上。

現在看來一切都很好,直到我想重定向用戶:然後服務器發出一個302消息,它覆蓋了我以前的404頭,所以雖然我可以發送用戶到所需的地方,我仍然可以不告訴searchbots地址是錯的。

如果我在標題行之後添加一個include("index.php?code=404")它不會工作,服務器說該文件不存在。

我該怎麼辦?

+0

我忘了提及:當我搜索這個主題時,它提出了一個有趣的問題:如果我的'index.php?code = 404'頁面丟失了某些東西,比如圖標。當我的網站生成頁面時,圖標會顯示一個404,它將重定向,這將生成一個404 ...因此,我的原始想法是否會產生一些無限循環? – ZTefter 2012-07-16 10:11:44

回答

5

嘗試是這樣的:

<?php 

    header("HTTP/1.0 404 Not Found"); 

    echo '<html> 
      <head> 
       <meta http-equiv="Refresh" content="0;url=http://www.mysite.com/index.php?code=404" /> 
      </head><body></body> 
      </html>'; 


?> 

我使用的是meta重定向,否則你得到的頭部已經發送了錯誤。

我在本地主機上使用Fiddler測試了這個,並得到了正確的404響應,然後被正確地重定向到了不同的頁面。

+1

我已更新它。 – Alfo 2012-07-16 10:15:17

0

您可以將include("index.php")添加到您的404頁面而無需代碼參數;然後在你的index.php中包含一個將檢查當前頁面的URL的部分。因此,如果頁面URL包含404.html,請包含錯誤消息,否則顯示主索引正常。

3

另一個建議,我會建議修改的.htaccess處理404

添加類似:

ErrorDocument 404 /404.php 

到你的.htaccess將處理事情非常漂亮的你。

您可以在任何需要的地方放置404錯誤模板。例如,你可以將所有的錯誤消息被稱爲「錯誤」

ErrorDocument 404 /errors/404.php 

手柄很好的事情,當然其他錯誤消息文件夾中。