Apache-2.4

Apache .htaccess - If 指令評估首頁是否是目前頁面

  • March 29, 2021

如果載入的頁面是首頁(),我只是想設置一個標題/,但是,我無法做到這一點。我試過的:

#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>

有人可以幫忙嗎?

這很可能是與 mod_dir 和DirectoryIndex. (或標準的內部重寫,如果您使用的是前端控制器模式 - 儘管這通常不適用於這種情況。)

<If>在 mod_dir 已經將請求(以內部子請求的形式)重寫到目錄索引文件之後,表達式被合併晚,例如。. 更新伺服器變數以反映重寫的 URL 路徑。/index.html``REQUEST_URI

因此,您要麼需要檢查目錄索引文件:

<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 伺服器變數並且可用於您的腳本。

引用自:https://serverfault.com/questions/1058702