web-dev-qa-db-ja.com

MIMEタイプが正しくありません-髪を抜く

CSSファイルがApacheによってtext/htmlと誤ってマークされるという問題があります。ブラウザでファイルタイプが一致せず、無視されて表示エラーが発生します。

RHEL5サーバーでApache2.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>

これが私がシェルから得ているものです:

[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

3つすべての点で間違っています。

これが私の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"

だから...私はここで何を見落としていますか?

2
a coder

私はついに問題を発見しました。 Traq インストールビューファイル、install/views/layout.phpには、このファイルの先頭にdoctypeが含まれていました。

<!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 &copy; 2009-<?php echo date("Y"); ?> Traq.io
            </footer>
        </div>
    </body>
</html>

一番上の行を削除する<!doctype html> 問題を解決しました。含まれているcssファイルが実際のcssファイルとして表示され、最終的にスタイルが表示されます。

2
a coder