簡體   English   中英

Browser Not Interpreting.css File when using AddType.css in .htaccess

[英]Browser Not Interpreting .css File when using AddType .css in .htaccess

我有一個與 Deflate 壓縮相關的非常有趣的問題,Apache .htaccess) 和 CSS 文件。

我的服務器上有兩個 CSS 文件。 一個叫做 styles.php 並且在 styles/ 目錄中通過 mod_rewrite 根據數據庫值添加了動態值(它從 styles.php 重寫為 site.css 並且在文件的開頭有一個 text/css 881853808 8065)。 我還有一個常規的舊 css 文件,其中包含 static 內容,在名為 styles.css 的同一目錄中沒有更改。

我想為我的網站添加壓縮功能,所以我添加了以下行以開始壓縮我的 css 和 js 文件。 我將其添加到我網站的 root_directory 中。

<ifModule mod_deflate.c>
    <filesMatch "\.(js|css)$">
        SetOutputFilter DEFLATE
    </filesMatch>
</ifModule>

好吧,最初那是行不通的。 所以我將 root.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 文件(static 文件)。 一旦我從該 AddType 行中刪除“,css”,瀏覽器就會再次開始讀取該文件,我的 css 恢復正常。 但是它不再通過 apache 壓縮。

如果我添加類型,為什么瀏覽器不讀取 static css 文件有什么想法嗎? 我只用 text/css 而不是 .css 嘗試了它,它沒有壓縮文件(但瀏覽器解釋了它)。

更新:

我將其添加到 root.htaccess 文件中。 我們壓縮、詮釋了甜蜜。

<filesMatch "\.css$">
FileETag None
<ifModule mod_headers.c>
Header set Content-type "text/css"
</ifModule>
</filesMatch>

當您通過 PHP 預處理器運行 CSS 文件時,PHP 將通過默認標頭自動將 output 作為text/html文件,因為您沒有手動指定它。 實際上,您的瀏覽器正在接收一個擴展名為.css的文件,該文件的標頭聲稱它是一個 HTML 文件,因此它試圖將其解釋為 HTML 而不是 CSS。

如果你的 CSS 文件實際上需要作為 PHP 運行並且其中有 PHP,你需要重新發布適當的文件類型所以當它 output 時,它仍然是 CSS:

<?php
header('Content-type: text/css');
?>

您不能只通過 PHP 發送 CSS 文件並期望它的工作完全相同 如果您實際上沒有使用 PHP 對其進行預處理,那么您不應該通過那里發送它。


至於通貨緊縮問題,我永遠無法真正讓 mod_deflate 親自工作(不知道為什么)。 我不得不改用 mod_gzip。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM