代码之家  ›  专栏  ›  技术社区  ›  G Berdal

如何检测页面是否通过重定向请求?

  •  4
  • G Berdal  · 技术社区  · 17 年前

    1. 所有重定向都是301重定向。由于SEO规则,需要避免添加指标。(谷歌用单独的值索引URL)

    2. 我试着检查所有的环境变量,但它们都是空的(假设是正常的),在这方面,内部重定向没有任何不同(我认为)。

    3. 检测需要实时进行,因此不能选择日志文件。

    我希望这是有道理的。

    以前:我在考虑状态代码,但我不确定是否有办法在目标页面上读取状态代码。(我们已经明确表示它不会起作用)

    6 回复  |  直到 17 年前
        1
  •  5
  •   Sinan Ünür    17 年前

    怎么样:

    my $cgi = CGI->new;
    
    print $cgi->redirect(
        'http://example.com/this/page/that.html?redirect=yes'
    );
    

    redirect=yes

    你可以试试这个 referer 标题,但这有它自己的问题。

        2
  •  5
  •   brian d foy    17 年前

    根据浏览器和中间代理的不同,可能会发生几种情况。然而,在大多数情况下,你不能依赖任何一件事。状态代码是服务器发送回浏览器的代码,因此您不会在请求中获得这些代码。

    不要依赖你无法控制的东西,而是把它变成你可以控制的东西。

    1. 确保你做了正确的重定向。有 redirections for permanent and temporary moves as well as other situation .

    2. 如果您不需要实时数据,您可以从日志文件中找到。如果您试图找出流量模式,这是很方便的,但在实时中不是很有用。

    3. 将其设置为内部重定向,而不是外部重定向。您可以在web服务器的请求周期中跟踪它。

    4. 在外部重定向上设置cookie,然后在下一个请求中查找它。但这不会抓住那些不做饼干的人。

        3
  •  3
  •   SaÅ¡a    13 年前

    这就是我最近检测重定向并将其作为自定义请求头公开给应用程序所做的: X-Redirect: 1

    在源端,我将所有请求重定向到目标服务器,方法是预先添加一个 /redirect 到URL路径:

    RewriteRule ^/(.*) http://target-server.com/redirect/$1 [L,R=permanent]
    

    在目标端,我检测到 /重定向 在路径中,通过另一个重定向将其剥离,并将自定义cookie注入响应:

    RewriteRule ^/redirect/(.*)$ /$1 [R=permanent,L,CO=redirect:1:target-server.com:86400:/]
    

    同样在目标端,我将cookie转换为环境变量,“禁用”cookie,然后将env变量转换为自定义请求头:

    RewriteCond %{HTTP_COOKIE} redirect=1 [NC]
    RewriteRule ^(.*)$ /$1 [L,CO=redirect:0:target-server.com:86400:/,E=redirect:1]
    RequestHeader set X-Redirect 1 env=redirect
    
        4
  •  2
  •   Gumbo    17 年前

    我认为没有办法做到这一点。我能想象的唯一指标就是 Referer header field . 但似乎只有当请求是以非HTTP方式启动(单击链接、表单提交、元刷新等)时,才会发送它。

        5
  •  1
  •   G Berdal    17 年前

    这个问题可能没有答案,但有一个解决方案部分解决了这个问题。 通过使用会话cookies,修改后的内容将仅存在于该特定会话中,以便下次再次访问原始内容。

    谢谢大家的帮助。

        6
  •  0
  •   Daniel C. Sobral    17 年前

    如果请求是一个重定向,那么应该有一个标头指示它从何处重定向。

    推荐文章