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

G B*_*dal 4 redirect header http

在客户的网站上有大量重定向到特定页面.此页面需要以某种方式检测请求是直接的(手动输入的URI)还是重定向.

  1. 所有重定向都是301重定向.由于SEO规则,需要避免添加指标.(Google使用值分别对URL进行索引)

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

  3. 检测需要实时发生,因此日志文件不是一个选项.

简而言之,参数通过脚本在cookie中注册,然后301重定向到内容由cookie驱动的页面.当cookie被注册时,当有人重新填写地址栏中的地址时,内容将不会更改回原始内容.

我希望这是有道理的.

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

Sin*_*nür 5

怎么样:

my $cgi = CGI->new;

print $cgi->redirect(
    'http://example.com/this/page/that.html?redirect=yes'
);
Run Code Online (Sandbox Code Playgroud)

您使用什么机制来区分重定向然后可以查看查询字符串来决定。当然,这并不能阻止用户将 URL 加入书签redirect=yes等。

您可以尝试referer标题,但这有其自身的问题。


bri*_*foy 5

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

你没有说你想要解决什么问题或者为什么这一点很重要.你想解决什么问题?

而不是依靠你无法控制的东西,把它变成你可以控制的东西.

  1. 确保您正在进行正确的重定向.永久和临时移动以及其他情况都有重定向.

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

  3. 而不是外部重定向,使其成为内部重定向.您可以通过Web服务器的请求周期跟踪它.

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

  5. 将路径信息添加到重定向,或者可以像Sinan建议的那样查询参数.


G B*_*dal 2

受到布莱恩的启发,我退后一步,看看到底是什么导致了我的问题。

这个问题可能没有答案,但有一个解决方案可以部分解决问题。通过使用会话 cookie,修改后的内容将仅存在于该特定会话中,因此下次可以再次访问原始内容。这并没有改变这样的事实:在地址栏中重新输入 url 仍会导致页面使用 cookie。

感谢大家的努力帮助。