php - 如何捕获并记录使用 PHP 发生的任何 301 重定向 (.htaccess)

标签 php .htaccess redirect logging

我在 .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/

相关文章:

php - .htaccess 打开 .css 而不是 .php

javascript - 有没有办法在html javascript中重写裸域url

ssl - 如何强制或重定向我的 next.js 网站以使用 https

php - Mysql 对于具有相似 where 子句的 2 个查询返回不同的结果

php - 在 PHP 中将数字序列转换为数组

php - 使用 PHP cmd 时图像不会上传到 FTP 文件

php - 从 .htaccess mod_rewrite 规则中排除子域?

apache - .htaccess if/else 取决于 {SERVER_NAME}?

php - 命令不同步;你现在不能运行这个命令

Java将所有页面请求重定向到同一个JSP文件