У меня проблема с тем, что файлы CSS неправильно помечаются Apache как text / html. Тип файла в браузере не соответствует типу и игнорируется, что приводит к сбоям отображения.
Я использую Apache 2.2.3 на сервере RHEL 5.
Я пробовал добавить это в 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:
<VirtualHost 1.2.3.4:80>
ServerName my.site.com
ServerAdmin me@site.com
DocumentRoot /var/www/mysite/
# Log info redacted #
</VirtualHost>
Конфигурация SSL виртуального хоста:
<VirtualHost 1.2.3.4:443>
ServerName my.site.com
ServerAdmin me@site.com
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>
Вот что я получаю от оболочки:
[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>
<html lang="en" dir="ltr">
<head>
<title>Traq Installation<?php echo isset($title) ? " / {$title}" :''; ?></title>
<style type='text/css'>
@import '/traq/install/install.css';
@import '/traq/install/test.css';
</style>
</head>
<body>
<div id="wrapper">
<header id="head">
<h1>Traq Installation</h1>
<h2><?php echo isset($title) ? $title :''; ?></h2>
</header>
<div id="page">
<?php echo $output; ?>
</div>
<footer>
Traq © 2009-<?php echo date("Y"); ?> Traq.io
</footer>
</div>
</body>
</html>
Удаление верхней строчки <!doctype html>
решил проблему. Включенные файлы css теперь отображаются как обычные файлы css, и наконец появляются стили.