有没有办法检查RewriteCond
Referer 是否包含请求的 URI 或者......
RewriteCond %{HTTP_REFERER} == 'host.com/' + %{REQUEST_URI} ...
?
我需要捕捉浏览者是否点击了页面上链接到同一页面的链接并RewriteRule
据此进行更改。
答案1
是的,你可以构建一个状况这样做(虽然听起来有点奇怪,但是嘿)......
要检查用户是否“点击”了链接到同一页面的页面上的链接……换句话说,请求的主机 + URL 路径是否是 HTTP Referer 请求标头的子集,那么您可以使用 mod_rewrite 执行如下操作状况:
RewriteCond %{HTTP_REFERER}@@%{HTTP_HOST}%{REQUEST_URI} ^https?://([a-z.-]+/[^?]*)(?:.*)@@\1$
只是@@
一个在 URL 中没有出现的字符序列,并充当我们尝试匹配的两个部分之间的分隔符。
这条件模式(regex) 使用反向引用 ( \1
) 来检查 Referer 模式中捕获的子组是否与HTTP_HOST
+匹配REQUEST_URI
。
如果您的网站仅支持 HTTPS,那么您可以?
删除^https?://
。
请注意,这将明确忽略 HTTP_REFERER 上的任何查询字符串,而仅检查 URL 路径和主机名。
只需添加有关 HTTP Referer 请求标头的强制性说明...它不是 100% 可靠的。用户代理可能不会在需要时发送 Referer 标头,如果用户倾向于这样做,则很容易伪造它。