Назад | Перейти на главную страницу

Как я могу заставить Apache2 обслуживать файлы .shtml как Content-Type «text / html», а не «text.html»?

Я работаю над веб-сайтом, реализованным как shtml, и когда я пытаюсь загрузить домашнюю страницу (http://simplyclassicremodeling.com) из IE8, он говорит, что не может открыть файл, потому что он передан как Content-Type "text.html". Страница отлично загружается из Chrome и загружается (с некоторыми проблемами CSS, которые здесь не актуальны) в Firefox.

httpd.conf имеет:

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

и далее вниз:

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

Заголовки HTTP из сеанса Telnet:

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

Переставлены ли «AddType» и «AddOutputFilter»? На основании этой информации, знаете ли вы, почему IE8 может подумать, что файлы .shtml отправляются как Content-Type: text.html? Есть ли способ задать Apache глобально: «Если вы собираетесь передавать как 'text.html', используйте вместо этого 'text / html'?

Спасибо,

Возможно, где-то еще в httpd.conf или в одном из включенных файлов есть неправильная строка. Я бы проверил основную конфигурацию и другие с помощью grep, чтобы отследить это.

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

Кроме того, вы можете принудительно указать тип с помощью FilesMatch. Вот пример:

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

Вы можете попробовать переписать заголовок, если браузер IE:

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

(Предостережение: это не проверено, но я думаю, что он должен работать в соответствии с документация mod_setenvif.)