Como posso fazer com que o Apache2 exiba arquivos .shtml como Content-Type “text / html” e não “text.html”?

3

Estou trabalhando em um site, implementado como shtml, e quando tento carregar a página inicial ( link ) do IE8, ele diz ele não pode abrir o arquivo porque ele foi transferido como Content-Type "text.html". A página é carregada bem no Chrome e carregada (com alguns problemas de CSS que não são relevantes aqui) no Firefox.

link

Options Includes Indexes FollowSymLinks ExecCGI 
AddHandler cgi-script .cgi .pl
AddType text/html .shtml
AddHandler server-parsed .shtml

e mais abaixo:

AddType text/html .shtml 
AddOutputFilter INCLUDES .shtml
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript application/javascript

Os cabeçalhos HTTP, de uma sessão Telnet, são:

GET http://simplyclassicremodeling.com/ HTTP/1.0

HTTP/1.1 200 OK
Date: Fri, 27 Jan 2012 21:57:54 GMT
Server: Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.9-dev DAV/2 PHP/5.2.6
Accept-Ranges: bytes
Cache-Control: max-age=2592000, public
Expires: Sun, 26 Feb 2012 21:57:54 GMT
X-UA-Compatible: IE=Edge,chrome=1
Connection: close
Content-Type: text.html

Os "AddType" e "AddOutputFilter" são transpostos? Com base nessas informações, você saberia por que o IE8 pensaria que arquivos .shtml estão sendo enviados como Content-Type: text.html? Existe uma maneira de perguntar globalmente ao Apache: "Se você for transferir como 'text.html', use 'text / html' em seu lugar?

Obrigado,

    
por Jonathan Hayward 27.01.2012 / 18:31

2 respostas

5

Provavelmente existe uma linha incorreta em algum outro lugar no httpd.conf ou em um dos arquivos incluídos. Gostaria de verificar a configuração principal e outros com grep para rastrear isso.

grep Includes httpd.conf
grep text.html httpd.conf

Como alternativa, você pode forçar o tipo usando o FilesMatch. Aqui está um exemplo:

<FilesMatch "\.(shtml)$">
   # type only
   ForceType text/html
   # type and character set
   # ForceType 'text/html; charset=UTF-8'
</FilesMatch>
    
por 28.01.2012 / 00:03
1

Você pode tentar reescrever o cabeçalho se o navegador for o IE:

BrowserMatch MSIE
SetEnvIf Request_URI "\.shtml$" msie_ssi
Header set Content-Type text/html env=msie_ssi

(Ressalva: Isso não foi testado, mas acho que deve funcionar de acordo com a documentação do mod_setenvif .)

    
por 27.01.2012 / 23:25