我想將所有影像快取 1 個月,并且效果很好,但問題是當我嘗試從快取中排除子目錄時。
所以有影像:
/ (基本目錄)
/IMG/
/IMG/檔案夾/
IMG/BIG/
所以所有影像都需要快取,但我想讓它不快取IMG/BIG/檔案夾中的影像
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
</IfModule>
上面的代碼有效,但是當
我嘗試使用此代碼排除 /IMG/BIG 然后它不起作用
<Directory "/IMG/BIG">
<FilesMatch "\.(jpg|png)$">
<IfModule mod_expires.c>
ExpiresActive Off
</IfModule>
<IfModule mod_headers.c>
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</IfModule>
</FilesMatch>
</Directory>
我想在根檔案夾中的 .htaccess 中解決這個問題,而不是在 /IMG/big 檔案夾中添加另一個 .htaccess
uj5u.com熱心網友回復:
ExpiresByType image/jpg "access plus 1 month"
旁白: JPEG 檔案的正確 mime-type 是image/jpeg,不是image/jpg,所以上面的可能沒有做任何事情。
該<Directory>指令不被允許.htaccess- 這應該會導致 500 內部服務器錯誤(其詳細資訊將在您的服務器的錯誤日志中)。
該<IfModule>包裝不是必需的,除非你打算使用相同的配置在多個服務器上,其中指定mod_expires和/或在mod_headers中未啟用(不太可能)。
要定位除/IMG/BIG子目錄之外的所有其他內容,您可以使用<If>運算式并使用REQUEST_URI否定的正則運算式(!~運算子)檢查服務器變數。例如:
<If "%{REQUEST_URI} !~ m#^/IMG/BIG/#">
ExpiresActive on
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
</If>
要專門覆寫請求的任何標頭,/IMG/BIG/然后您可以添加一個<Else>指令:
<Else>
<FilesMatch "\.(jpg|png)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</FilesMatch>
</Else>
除非/IMG/BIG/目錄中有您可能想要快取的其他檔案型別,否則您可以洗掉<FilesMatch>容器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/363056.html
