无R标记的.htaccess Rewrite跳转外部域名的IP与referer问题
问题解答
首先需要明确Apache mod_rewrite的默认行为:当RewriteRule的重写目标为完整的外部HTTP/HTTPS URL时,哪怕不显式添加[R]/[R=301]标记,Apache也会隐式触发302临时重定向逻辑,将目标地址返回给客户端,由客户端自行发起新的请求,而非由domain1服务器代理请求。
针对三个问题的具体答案如下:
- 问题1:记录的是真实用户浏览器的IP
domain2的请求是用户浏览器收到重定向响应后直接发起的,并非domain1服务器代理转发,因此日志中捕获的是用户的真实公网IP。 - 问题2:默认会携带domain1的来源标识
浏览器发起重定向后的新请求时,默认会将触发重定向的原请求地址http://www.domain1.com/mydirectory/作为Referer字段的值传递给domain2,除非domain1侧配置了特殊的Referrer-Policy头限制了Referer传递。 - 问题3:客户端会收到302临时重定向状态码通知
如前面提到的规则特性,外部URL重写默认隐式携带[R=302]逻辑,客户端会明确收到302状态码和新的目标地址,之后自动跳转访问domain2的对应地址。
内容的提问来源于stack exchange,提问作者paulgutten
相关产品推荐
相关产品推荐

