我設置了一些阿帕奇(httpd的)配置Apache服務器對開一個Tomcat服務器這樣的:阿帕奇/的httpd的mod_rewrite和文件指令不工作
<Proxy *>
Order deny,allow
Allow from all
AllowOverride All
</Proxy>
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.v(\d+)\.(js|css|png|jpe?g|gif)$ $1.$3 [L]
</IfModule>
ProxyPass/http://localhost:8080/ retry=0
ProxyPassReverse/http://localhost:8080/
ProxyPreserveHost on
<Files "*.html">
Header set Cache-Control "public, max-age=900"
</Files>
都在我重寫模塊和頭模塊安裝。 mod_rewrite規則就在那裏,以便我可以靜態化我的靜態資源,例如style.v2.css
將被轉換爲style.css
等。自定義標題是爲了避免瀏覽器積極緩存html文件。
代理指令將請求傳遞到偵聽端口8080的Tomcat服務器上。雖然重寫規則不起作用。我爲style.v2.css得到了一個404,因爲它沒有將文件名轉換爲style.css。
自定義標頭也沒有得到應用,但僅僅是因爲<Files>
指令與我的html文件不匹配。如果我刪除了<Files>
指令並將自定義標題應用於所有文件,那麼它們都會在其響應中獲得該標題。
我不知道如何調試。這個配置有什麼明顯的錯誤嗎?
我忘記了包含RewriteEngine On
以使重寫規則起作用。現在我已經添加了。即使我正在請求html文件,<Files>
匹配仍然不起作用。
此外,使用:
<Files "myfile.html">
Header set Cache-Control "public, max-age=900"
</Files>
...還是,當我提出要求專門爲myfile.html
不起作用。順便說一句,這個配置在<VirtualHost _default_:443>
之內。
我也試圖把我<Files>
指令一個指令<Directory>
裏面,但它仍然不能正常工作:
<Directory "/var/www">
<Files "*.html">
Header set Cache-Control "public, max-age=600"
</Files>
</Directory>