我有一個非常有趣的與Deflate Compression,Apache(htaccess)和CSS文件相關的問題。瀏覽器不解釋.css在.htaccess中使用AddType .css時的文件
我在我的服務器上有兩個CSS文件。一個名爲styles.php,並且通過styles /目錄中的mod_rewrite根據數據庫值添加了動態值(它從styles.php重寫爲site.css,並且在文件開始處有一個text/css頭)。我還有一個靜態內容的常規舊css文件,它在名爲styles.css的同一目錄中不會更改。
我想爲我的網站添加壓縮,所以我添加了以下行來開始壓縮我的CSS和js文件。我將其添加到我的網站的root_directory。
<ifModule mod_deflate.c>
<filesMatch "\.(js|css)$">
SetOutputFilter DEFLATE
</filesMatch>
</ifModule>
那麼最初沒有工作。所以我改變了根htaccess文件中的這一行,從此到下一件事。 (此代碼如下位於文件的頂部)
AddType application/x-httpd-php5 .html .php
AddType application/x-httpd-php5 .html .php .js .css
然後我的js和css文件的一個開始被壓縮(與YSlow的驗證.....耶!)。奇怪的是被重寫的css文件被壓縮(styles.php文件),但styles.css文件(靜態文件)不再被瀏覽器讀取。只要我從該AddType行中刪除「.css」,瀏覽器就開始再次讀取文件,並且我的css恢復正常,但不再通過apache壓縮。
任何想法爲什麼靜態css文件沒有被瀏覽器讀取,如果我添加類型?我只用text/css而不是.css來嘗試它,它不是壓縮文件(但是瀏覽器解釋它)。
更新:
我將此添加到root htaccess文件。我們現在已經壓縮,解釋了甜頭。
<filesMatch "\.css$">
FileETag None
<ifModule mod_headers.c>
Header set Content-type "text/css"
</ifModule>
</filesMatch>
你是否收到這個靜態css文件的正確的'Content-Encoding'和'Content-Type'頭文件? – 2012-04-09 21:38:42