Dot-Htaccess
Apache 伺服器 – 嘗試在 .htaccess 中使用 Location 指令
當在我的網站上呼叫特定路徑 (/foo/bar/) 時,我需要刪除所有記憶體。我的託管主機支持告訴我應該在 .htaccess 中執行此操作,並且我嘗試使用 Location 指令,如下所示:
<Location "/foo/bar/"> Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" </Location>
但我得到的只是內部伺服器錯誤。我是否遺漏了某些內容,或者是否應該將此指令放置在 .htaccess 中的某個位置。我已經嘗試了我能想到的一切,結果都是一樣的。
如前所述,文件
<Location>
中不允許使用該指令.htaccess
。如果/foo/bar/
直接與文件系統目錄相關,那麼您可以將.htaccess
文件放在該目錄中以將指令(Header
在本例中)應用於該目錄及以下目錄。但是,如果
/foo/bar/
只是一個 URL 路徑(這也是<Location>
指令在伺服器上下文中的目標),它與文件系統沒有直接關係,那麼您可以在訪問該 URl 路徑時設置一個環境變數並設置Header
有條件地基於是否設置了該環境變數。例如:
SetEnvIf Request_URI "^/foo/bar/$" NO_CACHE Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" env=NO_CACHE
當請求 URL 路徑(僅)時,上述設置 env var
NO_CACHE
(到 value ),然後僅在設置該 env var(通過最後一個參數)時應用該指令。1``/foo/bar/``Header``env=NO_CACHE
或者,如果您使用的是 Apache 2.4+,那麼您可以使用Apache
<If>
表達式僅直接針對該 URL 路徑,無需設置 env var。例如:<If "%{REQUEST_URI} =~ m#^/foo/bar/$#"> Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" </If>
另一種選擇,如果您使用的是 Apache 2.4.10+,那麼您可以直接在指令中使用Apache 表達式
Header
,以便僅針對該 URL 路徑。例如:Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" "expr=%{REQUEST_URI} =~ m#^/foo/bar/$#"