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

.htaccess技术问题:如何检测HTTP请求头是否存在?

Apache检测请求头不存在的重写规则方案

要检测请求头不存在(而非仅值为空),可以通过以下两种方式实现:

方法一:使用RewriteCond匹配空变量

利用RewriteCond判断请求头对应的环境变量是否为空,兼容大部分Apache版本:

# 检测四个Sec-Fetch系列请求头均不存在或值为空
RewriteCond %{HTTP:Sec-Fetch-Dest} !^.+$ [NC]
RewriteCond %{HTTP:Sec-Fetch-Mode} !^.+$ [NC]
RewriteCond %{HTTP:Sec-Fetch-Site} !^.+$ [NC]
RewriteCond %{HTTP:Sec-Fetch-User} !^.+$ [NC]
RewriteRule ^.*$ - [ENV=TEST:true]
Header set x-test "1" env=TEST

方法二:使用指令(Apache 2.4+)

若你的Apache版本是2.4及以上,<If>指令可更直观地检测请求头是否存在,无需依赖重写规则:

<If "!req('Sec-Fetch-Dest') && !req('Sec-Fetch-Mode') && !req('Sec-Fetch-Site') && !req('Sec-Fetch-User')">
    Header set x-test "1"
</If>

核心说明

  • 方法一中的!^.+$匹配“无任何字符”的情况,既覆盖请求头不存在(对应变量未定义,视为空),也包含头存在但值为空的场景。
  • 方法二中的req('HeaderName')会返回请求头的值,若头不存在则返回空,通过!req(...)即可判断头不存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:25:24