2013-07-29 64 views
4

一個網站(wwww.fake-web-site.com)重定向其到我的網站鏈接(www.real-web-site.com)。只有第一頁是不同的。重定向循環(HTTP_REFERER)

我寫了一個代碼將所有來自假冒網站的人重定向到google.com

if (strpos($_SERVER['HTTP_REFERER'],'fake-web-site.com') !== false) 
    header('Location: http://www.google.com/search?q=real-web-site.com'); 

它適用於Chrome瀏覽器,如果有人打開了假冒的網站,並點擊那些鏈接到我的網站鏈接,它會被重定向到google.com。之後,他可以從google.com打開我的網站。

在Firefox中,如果有人打開了假冒的網站,並點擊那些鏈接到我的網站鏈接,它會被重定向到後google.com ,如果他點擊實web-site.com in google.com,他再次重定向到google.com

我認爲這與Firefox緩存機制有關。有人可以提出建議嗎?

+0

這聽起來有點令人困惑。你想達到什麼目的?您是否想要生成搜索請求以查找您的網頁以獲得流行度? – Mario

+0

可能是Firefox的緩存標題 – 2013-07-29 07:11:03

+0

@Mario:不,假的頁面吸引了我的客戶,它的域名在搜索引擎上比我好。我不希望這些鏈接到我的網站。如果有人想訪問真實的網站,他不應該從假的網站上找到它。 – deepmax

回答

0

瀏覽器緩存重定向。根據HTTP響應狀態:

如果狀態是301永久移動那麼瀏覽器應該並將(可能)緩存它。

如果狀態是302找到那麼瀏覽器不應該也不會緩存它。

還有其他的東西留給瀏覽器來決定。從你的代碼看來,你只是在迴應200 OK

您可以通過執行e.g設置PHP中的響應頭:

header("HTTP/1.0 302 Found"); 

這是導致前完成任何其他機構或頭輸出 - 除非你使用的輸出緩衝。

+0

有趣的,讓我試試看。 – deepmax

+0

Imho PHP在使用Location時默認使用302。爲確保響應不被緩存,明確禁止它在HTTP標頭中(請參閱http://stackoverflow.com/a/2068407/413531) – Hirnhamster