Apache .htaccess - 如果指令评估主页是否是当前页面

Apache .htaccess - 如果指令评估主页是否是当前页面

我只是想在加载的页面是主页时设置标题 ( /),但是我无法做到这一点。我尝试过:

#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 服务器变量并可供您的脚本使用。

相关内容