我遇到 Apache 错误标记 text/html 的 CSS 文件的问题。文件类型在浏览器中不匹配,被忽略导致显示失败。
我在 RHEL 5 服务器上使用 Apache 2.2.3。
我尝试将其添加到httpd.conf
并重新加载配置service httpd reload
:
AddType text/css .css
浏览器看到的没有变化。我的 css 文件仍在显示text/html
(即使当我使用 php curl 来探测 mime 类型时。这没有区别,服务器正在发送text/html
文件)
然后,我注释掉了 中的以下几行httpd.conf
,以确保魔术不会发生一些古怪的事情:
LoadModule mime_magic_module modules/mod_mime_magic.so
<IfModule mod_mime_magic.c>
MIMEMagicFile /usr/share/magic.mime
MIMEMagicFile conf/magic
</IfModule>
一旦这些被搁置,我保存并重新加载配置。没变。.css 文件仍然以text/html
.
虚拟主机标准配置:
<VirtualHost 1.2.3.4:80>
ServerName my.site.com
ServerAdmin [email protected]
DocumentRoot /var/www/mysite/
# Log info redacted #
</VirtualHost>
虚拟主机 SSL 配置:
<VirtualHost 1.2.3.4:443>
ServerName my.site.com
ServerAdmin [email protected]
DocumentRoot /var/www/mysite/
# Log info redacted #
# SSL Certificate config redacted #
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
这是我从 shell 得到的:
[boxor]# file --mime install.css
install.css: text/x-c; charset=us-ascii
这是我从 php 得到的:
$file = 'https://my.site.com/traq/install/install.css';
echo mime_content_type($file);
$file = $_SERVER['DOCUMENT_ROOT] . '/traq/install/install.css';
echo mime_content_type($file);
回报:
text/html; charset=UTF-8
text/plain
这三点都错了。
这是我的 apache 访问日志中的一行(添加了 Content-type):
1.2.3.4 - - [10/Oct/2012:08:32:38 -0400] "GET /traq/install//install.css HTTP/1.1" 200 2600 "http://my.site.com/traq/install/" "text/html" "Mozilla/5.0 blahblah Firefox/15.0.1"
同一页面中包含的不存在的 css 文件也作为“text/html”返回:
1.2.3.4 - - [10/Oct/2012:09:11:11 -0400] "GET /traq/install/idontexist.css HTTP/1.1" 200 2600 "http://my.site.com/traq/install/" "text/html" "Mozilla/5.0 blahblah Firefox/15.0.1"
所以...我在这里忽略了什么?
我终于发现了问题。Traq安装视图文件 install/views/layout.php 在此文件的顶部包含一个文档类型:
删除顶线
<!doctype html>
解决了这个问题。包含的 css 文件现在被视为实际的 css 文件,样式终于出现了。