2012-03-06 1049 views
0

一个网站使用了“301永久重定向”到我的网站有没有一种方法可以设置代码检测到这一点,并显示一个页面,当我的网站通过这个访问?301永久重定向

有没有人有这方面的想法?

+1

什么是您的服务器端语言? – ManseUK 2012-03-06 16:07:09

+1

不可以。您的网站只会看到来自客户端浏览器的'GET'请求。 301重定向直接在其他站点和客户端浏览器之间完成,并且不会出现在您自己的站点上。 – 2012-03-06 16:07:53

+0

如果您想要显示301重定向的特定页面,为什么不直接将301重定向指向该页面呢? – JaredPar 2012-03-06 16:08:23

回答

1

你只能得到一个引用者。我想你无法获得客户端在上次请求期间获取的服务器上的http状态码。

所以我的答案是NO,你不能在你的服务器上获得301状态码。

但是你可以用引用变量做一些必要的魔法。

例如在PHP中,你可以阅读:

$_SERVER['HTTP_REFERER']; 
+0

301重定向Referer未通过 – 2012-03-06 16:20:25

+0

我知道使用301到我的网站,如果有帮助的网站的网址? – Ma9ic 2012-03-06 16:21:20

+0

不要使用'$ _SERVER ['HTTP_REFERER'];'。即使PHP的文档说它不能系统地信任。 – hohner 2012-03-06 16:22:04

0

你可以做的不多。如果你正在做301,你可以设置引用到查询字符串。但既然你没有,你只能抓住请求给你的东西。

0

您可以尝试使用PHP的$_SERVER['HTTP_REFERER']来跟踪访问者来源的源URL。我认为它有点狡猾,并且可能不会在所有浏览器中产生相同的结果。即使PHP's documentation说'它不能真正被信任'。

为什么你必须使用.htaccess重定向?你可以做这样的事情:

站点A的index.php文件:

header("Location: http://siteb.com/?ref=".urlencode('http://sitea.com'); 

站点B的index.php文件:

if(isset($_GET['ref'])) 
{ 
    if($_GET['ref']=='http://sitea.com') 
    { 
     // Do something 
    } 
} 

编辑:

如果你不能编辑网站A的代码或服务器设置,请尝试使用:

if($_SERVER['HTTP_REFERER']=='http://sitea.com') 
{ 
    // Do something 
} 
+0

我还没有设置301重定向其他人必须指向我的网站,所以我想基本上告诉他们,他们输入的网址不是“官方的”可以这么说 – Ma9ic 2012-03-06 16:23:04

+0

我编辑了问题 – hohner 2012-03-06 16:25:38

+0

我试图\t Ma9ic 2012-03-06 16:33:58