有没有办法检查导致重定向的人或者是什么?

问题描述 投票:2回答:3

我的项目(使用复杂的框架/ cms)基于PHP,.htaccess,JS等重定向...并且Iam努力寻找导致特定重定向的人。虽然我看到使用常用工具(RedirectChecker,Browser-Dev-Tools ......)重定向,但我看不出是谁/是什么导致它。是否有一般的方法来找出例如

  • foo.de - > 301 - > www.foo.de(.htaccess line:4711)
  • www.foo.de - > 301 - > www.foo.com/de/(somefile.php line:666)

注意:我可以访问服务器。

php apache redirect
3个回答
0
投票

您无法从客户端检查server-sided redirection是如何触发的。但是,您可以执行的操作是每次重定向时都可以添加自定义HTTP Headers

PHP中的示例:

header('HTTP/1.1 301 Moved Permanently by PHP script'); 应该出现在Firebug或其他检查工具中。

替代方案(尚未尝试过)是:

header('HTTP/1.1 301 Moved Permanently');
header('Redirected from index.php');

0
投票

一个激进的(但在某种意义上说是最正确的)处理方法是用header()替换项目中所有出现的my_header()并写入my_header,以便它记录它的参数并将它们进一步传递给php的header。如果您的FW使用名称空间,您只需将自己的header添加到NS。

如果你不能改变FW代码,你需要runkit或sort来挂钩全局函数。


0
投票

对于.htaccess重定向,您可以启用重写登录RewriteLog。对于php重写你可以做的是强制输出到浏览器(参见flushob_flush)。框架尝试设置标头时会生成错误,例如位置标头。

您还可以查看override_function来覆盖标头函数,检查是否发送了位置标头并将其记录到文件或抛出异常或错误。您可以使用debug_backtrace获取跟踪。你将PECL apd >= 0.2使用override_function

© www.soinside.com 2019 - 2024. All rights reserved.