You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.htaccess中检测完整的HTTP_REFERER字符串

在.htaccess中检测完整HTTP_REFERER(含查询参数)的解决方案

你遇到的问题核心是正则匹配规则的写法问题——浏览器发送的HTTP_REFERER确实包含完整的URL(包括查询参数),但需要正确编写正则表达式来匹配完整字符串。

具体实现规则

启用mod_rewrite后,通过RewriteCond精准匹配带查询参数的完整referer:

RewriteEngine On

# 允许来自firstdomain.org指定完整referer的请求
RewriteCond %{HTTP_REFERER} ^https://firstdomain\.org/index\.php\?r=something&cguid=[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ [NC]
RewriteRule ^ - [L]

# 拒绝非指定来源的请求(可选,根据实际需求调整)
RewriteCond %{HTTP_REFERER} !^https://firstdomain\.org/index\.php\?r=something&cguid=[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule ^ - [F]

关键注意事项

  • 特殊字符转义:正则中的.、?、&属于特殊元字符,必须用反斜杠\转义,否则会被正则引擎解析为通配符或逻辑符号,导致匹配失败。
  • 精准匹配UUID格式:示例中用[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}精准匹配UUID格式的cguid参数,如果你不需要这么严格,也可以简化为[a-f0-9-]+匹配任意由字母、数字和连字符组成的cguid值。
  • 灵活匹配调整:如果r参数的值不固定,只需要确保referer包含cguid参数,可将正则调整为:
    RewriteCond %{HTTP_REFERER} ^https://firstdomain\.org/index\.php\?.*cguid=[a-f0-9-]+.*$ [NC]
    
  • 模块启用确认:确保服务器已经启用mod_rewrite模块,否则规则不会生效。

内容的提问来源于stack exchange,提问作者gilbertdelyon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:35:06