2013-07-29 91 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