2012-11-04 29 views
4

我想知道是否有使阿帕奇服務器自動從重定向到其默認錯誤頁面的錯誤代碼header()函數內設置的posibility。如何從使用header()函數設置的錯誤代碼服務器重定向到默認錯誤頁面?

可以說我有我的page.php文件,該頁面有這樣的:

<?php header("HTTP/1.1 404 Not Found"); ?> 

瀏覽器(使用Chrome網上應用開發工具),表明響應已發送,但它不重定向到它的默認錯誤頁面,可能是因爲該文件仍然存在。

什麼我想要做的,是特定文件重定向到自己默認的錯誤頁面,但保持在瀏覽器中顯示的確切地址,爲服務器做同樣的動作,當你輸入一個不存在的網址

回答

1

如果我沒記錯的話,你可以配置Apache在httpd.conf中使用特定的404頁,它將保持URL相同,但交付的404錯誤頁面:

ErrorDocument 404 /404.php 

和/ 404。 PHP,只是把這樣的事情:

<html> 
    <head> 
     <title>Object not found</title> 
    </head> 
    <body> 
     <h1>Object not found</h1> 
     <p>The object <?php echo($_SERVER['PHP_SELF']); ?> could not be found on this server.</p> 
    </body> 
</html> 
+0

嗯但是我想要做的是讓服務器讀取我的HTTP errod代碼並自動重定向到它的**默認**錯誤頁面,該代碼我會自己找到該頁面,如果它的自定義頁面不是默認 – Sike

+0

服務器不會讀取錯誤代碼,它會直接發送到HTTP標頭中的用戶Web瀏覽器,並且由瀏覽器決定它在標頭中遇到404錯誤代碼時的行爲。 Apache的錯誤頁面即時生成(除非您在httpd.conf中另行指定),並且就我而言,如果URL確實存在,則無法觸發它們顯示。你可以創建一個非常小的404頁面,看起來完全像Apache的,不是嗎? – phillid

+0

是啊,我的服務器不讀取錯誤代碼,但當請求被傳送到服務器不試圖找到該文件,如果它不存在發送404併發送404頁面內容到瀏覽器顯示?但我只是想知道它是否可行。 – Sike

0

要獲取HTTP響應代碼,您可以使用http_response_code()函數。例如:

if(http_response_code() == 404) 
{ 
    // Redirect to your valid custom page 
    header("Location: http://www.mypage.com/page_not_found.php"); 
} 
+1

默認的apache錯誤頁面怎麼樣?不是由我創建的我只想要apache服務器的默認**錯誤頁面 – Sike

0

重定向到一個不存在的頁面。然後你得到apache創建的404,因爲你確實已經登陸了一個不存在的頁面。

這可讓您「決定」誰獲取該頁面以及誰反彈。當然,如果他們的網絡客戶端中有一個「nofollow」指令,它將會失敗。

我不知道有一種方法有一個PHP頁面有Apache檢查404頁面後檢查問題。它已經放棄了對PHP的控制。所以你可能需要通過轉向不存在的文件將請求推回到apache。你甚至可以搞笑並重定向到相同的文件名......但結束它在.html而不是PHP,如果不存在Poof你有一個Web瀏覽器的404錯誤。