我在 .htaccess 文件中设置了一堆 301 重定向。 我想做的是跟踪重定向的使用次数,以便我可以更好地管理它们。
有没有办法捕获并记录 PHP 发生的 301 重定向匹配?
换句话说,如果重定向是:
RewriteRule ^about/bozo$ /about [R=301,L]
有没有办法使用 PHP 捕获每次发生的“about/bozo”? (即使重定向是由 htaccess 调用处理的,而不是由 PHP header 重定向处理的)
最佳答案
您无法使用 PHP 记录 Apache 请求中较早触发的 3xx 重定向(例如,在 .htaccess
中)。重定向对于 PHP 来说是完全不可见的。
您无法使用 HTTP Referer
来确定是否发生重定向,因为浏览器会保留初始请求(如果有)中的 Referer
。
触发 3xx 重定向的请求应记录在服务器的访问日志中。
使用 PHP 实现此目的的唯一方法是,以某种方式(可能使用查询字符串)标记重定向的 URL,并在 PHP 脚本中检查这一点。例如:
RewriteRule ^about/bozo$ /about?redirected=true [R=301,L]
...但这可能是不可取的。
关于php - 如何捕获并记录使用 PHP 发生的任何 301 重定向 (.htaccess),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71267709/