我只是想在加载的页面是主页时设置标题 ( /
),但是我无法做到这一点。我尝试过:
#let's find var value - its echo / on the header
PassEnv REQUEST_URI
Header always set Echo %{REQUEST_URI}e
<If "%{REQUEST_URI} =~ m#^/$#">
#some other rules - never hits
Header always set Test "It works"
</If>
有人可以帮忙吗?
答案1
这很可能是 mod_dir 和 冲突的结果DirectoryIndex
。(或者,如果您使用前端控制器模式,则为标准内部重写 - 尽管这通常不适用于此实例。)
<If>
表达式合并晚的,在 mod_dir 已经重写了请求之后(以内部子请求) 到目录索引文档,例如。/index.html
服务器REQUEST_URI
变量将更新以反映重写的 URL 路径。
因此,您需要检查目录索引文档:
<If "%{REQUEST_URI} =~ m#^/index\.html$#">
#some other rules...
Header always set Test "It works"
</If>
或者,改为检查THE_REQUEST
服务器变量,该变量包含请求标头的第一行,并且在内部重写请求时不会改变。
THE_REQUEST
当请求GET / HTTP/1.1
主页( )时将包含形式为的字符串。/
例如:
<If "%{THE_REQUEST} =~ m#^[A-Z]{3,7}\s/\s#">
#some other rules...
Header always set Test "It works"
</If>
在旁边:
PassEnv REQUEST_URI
PassEnv
这里不需要该指令。REQUEST_URI
已经是一个 Apache 服务器变量并可供您的脚本使用。