Tipo MIME incorreto - arrancando meu cabelo

2

Eu tenho um problema com arquivos CSS sendo marcados incorretamente text / html pelo Apache. O tipo de arquivo é incompatível no navegador e é ignorado, causando falhas de exibição.

Estou usando o Apache 2.2.3 em um servidor RHEL 5.

Eu tentei adicionar isso a httpd.conf e recarregar a configuração com service httpd reload :

AddType text/css .css

Nenhuma mudança conforme vista pelo navegador. Meu arquivo css ainda está mostrando text/html (mesmo quando eu uso php curl para testar o tipo mime .. não faz diferença, o servidor está enviando um arquivo text/html )

Em seguida, comentei as seguintes linhas de httpd.conf , para ter certeza de que algo maluco não estava acontecendo com mágica:

LoadModule mime_magic_module modules/mod_mime_magic.so

<IfModule mod_mime_magic.c>
  MIMEMagicFile /usr/share/magic.mime
  MIMEMagicFile conf/magic
</IfModule>

Uma vez que esses foram reservados, eu salvei & recarregou a configuração. Nenhuma mudança. Os arquivos .css ainda estão aparecendo como text/html .

Configuração padrão do Virtualhost:

<VirtualHost 1.2.3.4:80>
    ServerName my.site.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/mysite/
    # Log info redacted #
</VirtualHost>

Configuração SSL do Virtualhost:

<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>

Veja o que estou recebendo do shell:

[boxor]# file --mime install.css
install.css: text/x-c; charset=us-ascii

Veja o que estou recebendo do 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);

retorna:

text/html; charset=UTF-8

text/plain

Errado em todas as três contagens.

Aqui está uma linha do meu log de acesso do Apache (com o tipo de conteúdo adicionado):

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"

Um arquivo css inexistente incluído na mesma página também é retornado como "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"

Então ... O que eu estou negligenciando aqui?

    
por a coder 09.10.2012 / 17:52

1 resposta

2

Eu finalmente descobri o problema. O arquivo de visualização de instalação Traq , install / views / layout.php, incluiu um tipo de documento no topo deste arquivo:

<!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>

A remoção da linha superior <!doctype html> solucionou o problema. Os arquivos css incluídos agora são vistos como arquivos css acutais, e os estilos finalmente aparecem.

    
por 10.10.2012 / 15:31