Php 有没有办法检查是谁或什么导致了重定向?
我的项目(使用复杂框架/cms)基于PHP、.htaccess、JS等进行重定向。。。我在努力寻找是谁导致了一个特定的重定向。虽然我使用常用工具(RedirectChecker、浏览器开发工具…)看到重定向,但我看不到是谁/什么导致了重定向。有没有一个通用的方法来找出答案Php 有没有办法检查是谁或什么导致了重定向?,php,apache,redirect,Php,Apache,Redirect,我的项目(使用复杂框架/cms)基于PHP、.htaccess、JS等进行重定向。。。我在努力寻找是谁导致了一个特定的重定向。虽然我使用常用工具(RedirectChecker、浏览器开发工具…)看到重定向,但我看不到是谁/什么导致了重定向。有没有一个通用的方法来找出答案 foo.de->301->www.foo.de(.htaccess-line:4711) www.foo.de->301->www.foo.com/de/(somefile.php行:666) 注意:我可以访问服务器。您无
- foo.de->301->www.foo.de(.htaccess-line:4711)
- www.foo.de->301->www.foo.com/de/(somefile.php行:666)
注意:我可以访问服务器。您无法从客户端检查
服务器端重定向的触发方式。但是,您可以做的是,每次重定向时都可以添加自定义HTTP头
PHP中的示例:
header('HTTP/1.1 301被PHP脚本永久移动')代码>
应该出现在Firebug或其他inspector工具中
备选方案(尚未尝试)是:
对于.htaccess重定向,可以启用“重写日志”。对于php重写,您可以做的是强制输出到浏览器(请参阅和)。当框架尝试设置头(例如位置头)时,将生成一个错误
您还可以查看覆盖header函数的步骤,检查location header是否已发送并将其记录到文件中,或者引发异常或错误。您可以使用。您将使用PECL-apd>=0.2
来使用override\u函数
一种基本的(但在某种意义上是最正确的)处理方法,即用my\u header()替换项目中出现的所有header()
并写入my_header
,以便它记录其参数并将其进一步传递到php的header
。如果您的FW使用名称空间,您只需将自己的头添加到NS即可
如果您无法更改FW代码,则需要runkit或sorts来钩住全局函数。是的,cms/framework中有一些部分是这样做的(php方面),但并非所有,不幸的是,我无法修改每个重定向。这种东西没有痕迹吗?看看重定向是由PHP、JS、HTML meta还是.htaccess执行就足够了。您可以跟踪JS和HTML重定向,只需使用浏览器的一些插件来禁用JS和meta重定向,您就会知道。对于服务器端重定向,您所能做的就是编辑每个重定向,并添加将告诉您更多信息的cutom头。禁用除要检查的重定向之外的所有重定向
header('HTTP/1.1 301 Moved Permanently');
header('Redirected from index.php');