如何在.htaccess中根据MIME类型添加指定HTTP响应头?
嘿,我刚好碰到过类似的问题,给你梳理下靠谱的解决方案!
首先得确认你用的是Apache 2.4及以上版本,因为<If>指令是从这个版本开始支持的。之前你的<If>没生效,大概率是变量用错了——你得检查响应头里的Content-Type,也就是用%{CONTENT_TYPE}这个变量,而不是请求相关的变量。
下面是直接能用的配置,专门给text/html类型的响应加两个自定义头,其他类型自动忽略:
# 只对text/html响应添加自定义HTTP头 <If "%{CONTENT_TYPE} =~ m#^text/html#i"> Header set X-Custom-Header1 "你的第一个自定义值" Header set X-Custom-Header2 "你的第二个自定义值" </If>
这里的正则m#^text/html#i是为了兼容各种text/html的变种,比如text/html;charset=utf-8这种带字符集的情况,i表示忽略大小写,更稳妥。
如果你用的是Apache 2.2(比较老的版本,不支持<If>),那就换用Header指令的expr语法,效果一样:
Header set X-Custom-Header1 "你的第一个自定义值" "expr=%{CONTENT_TYPE} =~ m#^text/html#i" Header set X-Custom-Header2 "你的第二个自定义值" "expr=%{CONTENT_TYPE} =~ m#^text/html#i"
最后别忘了检查下mod_headers模块有没有加载,你可以运行apachectl -M(或者httpd -M),看看输出里有没有headers_module (shared),如果没有的话,得先启用这个模块(比如在Ubuntu/Debian里用a2enmod headers,然后重启Apache)。
内容的提问来源于stack exchange,提问作者Jos Jonkeren
相关产品推荐
相关产品推荐

