【问题标题】:Browser Not Interpreting .css File when using AddType .css in .htaccess在 .htaccess 中使用 AddType .css 时,浏览器不解释 .css 文件
【发布时间】:2012-04-10 05:42:37
【问题描述】:

我有一个与 Deflate 压缩、Apache (htaccess) 和 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 进行了尝试,它没有压缩文件(但浏览器解释了它)。

更新:

我将此添加到根 htaccess 文件中。我们现在已经压缩、解释了甜蜜。

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

【问题讨论】:

  • 你收到正确的Content-EncodingContent-Type这个静态css文件的标题了吗?

标签: php css apache .htaccess stylesheet


【解决方案1】:

当您通过 PHP 预处理器运行 CSS 文件时,PHP 将通过默认标头自动将其输出为 text/html 文件,因为您没有手动指定它。实际上,您的浏览器正在接收一个扩展名为 .css 的文件,该文件的标题声称它是一个 HTML 文件,因此它试图将其解释为 HTML 而不是 CSS。

如果您的 CSS 文件确实需要作为 PHP 运行并且其中包含 PHP,则需要重新发出相应的文件类型,以便在输出时仍然是 CSS:

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

您不能只通过 PHP 发送一个 CSS 文件并期望它完全相同工作。如果您实际上没有使用 PHP 对其进行预处理,那么您不应该通过那里发送它。


至于通货紧缩问题,我永远无法真正让 mod_deflate 亲自工作(不知道为什么)。我不得不改用 mod_gzip。

【讨论】:

  • 也许我们中的一个人不在同一页面上。 style.php 文件(我有 header('Content-type: text/css'); 在顶部)该文件实际上正在正常工作。静态 styles.css 文件(其中 PHP 为零)是不工作的文件。但我确实做了仔细检查,静态的 css 文件(.css)被解释为 text/html。
  • @ImmortalFirefly: 是的,但是您正在运行 style.css 通过 PHP(通过将其类型设置为application/x-httpd-php5),这表明您没有设置内容-type(没有 PHP),因此将其设置为 text/html
猜你喜欢
  • 1970-01-01
  • 2016-03-02
  • 2011-04-01
  • 1970-01-01
  • 2018-02-20
  • 2010-09-09
  • 2011-01-16
  • 2019-09-21
相关资源
最近更新 更多