该指令
<IfModule mod_headers.c>
<If "%{REQUEST_URI} == '/admin'">
Header add Test test
</If>
</IfModule>
是正确的,并且如果请求未在其过程中被修改,则将添加标头。
例如,如果您有
<IfModule mod_headers.c>
<If "%{REQUEST_URI} == '/admin'">
Header add Test test
</If>
</IfModule>
RewriteEngine on
RewriteRule ^admin$ /index.php [L]
不会设置标头,因为请求已被修改并将被识别为/index.php
。要在响应上设置标头,您必须将其更改为
<IfModule mod_headers.c>
<If "%{REQUEST_URI} == '/index.php'">
Header add Test test
</If>
</IfModule>
RewriteEngine on
RewriteRule ^admin$ /index.php [L]
现在请求/admin
将被重写/index.php
,并REQUEST_URI
处理为“/index.php”,并且在响应发送到客户端之前设置了标头,请参阅mod_headers - Early and Late Processing
正常模式是迟到的,即在运行内容生成器和响应标头之前立即设置请求标头,就像通过线路发送响应一样。始终在操作服务器中使用后期模式。
因此,根据您的环境中处理和修改请求的方式,您还必须将条件修改为<If "%{REQUEST_URI} == '...'">
适合您环境的任何内容。