我有这个htaccess
RewriteEngine On
RewriteCond %{REQUEST_URI} /xxx.php$ [NC]
RewriteRule ^.*$ - [ENV=MAKE_CACHE:true]
<If "%{ENV:MAKE_CACHE} =~ /^true$/">
Header set CUSTOM_HEADER "custom value or my header"
</If>
我简化了htaccess但你可以得到这个想法:如果用户试图reuqest“xxx.php”我设置了一个环境变量,后者我设置了一个头CUSTOM_HEADER但由于某种原因Apache没有“看到”变量“ MAKE_CACHE“当到达线”“。我该如何解决这个问题?
答案 0 :(得分:0)
这与Apache内部处理的非直观序列有关。
<If ...
的表达式比任何 RewriteRule
更早得到评估,更不用说RewriteRule
内.htaccess
了,甚至更晚。
有两种方法可以使订购正确:
SetEnvIf
(不在<Location>
内)设置初始var,而不是<If ...
。当它以这种方式指定时,它会很早地运行。Header
指令上使用基于表达式的条件子句。这会延迟执行。编辑:测试示例:
Header always set FOO BAR "expr=%{REQUEST_URI} =~ m#^/xxx.php$#"