.htaccess для HTML

Для написания этой статьи подтолкнул длительный поиск в интернете примера нормального файла .htaccess для HTML4. Всё что удавалось найти касалось, в основном, HTML5 и PHP. А если и находил что-то для HTML4 то не все примеры были работоспособны, хотя и имели правильный синтаксис. Испробовав на практике массу советов и вариантов пришёл к весьма неутешительному выводу. То что работоспособность .htaccess в HTML4 связана не только с правильностью написания нужных директив, но и с особенностями хостинга - это понятно. Но лично мне ни один не подошёл: если работает одно - не работает другое и т.д. Вашему вниманию я представляю свой .htaccess с основными директивами которым сам пользуюсь.

Просто скопируйте весь код, сохраните и кидайте в корень сайта (не забудьте вставить свои данные).

AddType image/x-icon .ico AddDefaultCharset utf-8 Options +SymLinksIfOwnerMatch Options -Indexes Options -ExecCGI AddHandler server-parsed .html RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.site\.com$ [NC] RewriteRule ^(.*)$ http://site.com/$1 [L,R=301] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/ RewriteRule ^index\.html$ http://site.com/ [R=301,L] RewriteCond %{QUERY_STRING} ^.+$ RewriteCond %{QUERY_STRING} !_openstat=.+$ RewriteRule ^.*$ http://%{HTTP_HOST}/? [R=404,L] RewriteCond %{HTTP_USER_AGENT} libwww-perl.* RewriteRule .* – [F,L] <IfModule mod_headers.c> Header unset ETag Header append Cache-Control "public" <FilesMatch \.(html|xhtml|xml|shtml|phtml|php|txt)$> Header set Cache-Control "max-age=2592000, public, must-revalidate" </FilesMatch> <FilesMatch \.(ico|gif|png|jpg|ogg|mp4|flv|swf|wmv|wma|wax|wmx|wm)$> Header set Cache-Control "max-age=2592000, public, must-revalidate" </FilesMatch> <FilesMatch \.(eot|ttf|otf|svg|woff)$> Header set Cache-Control "max-age=2592000, public, must-revalidate" </FilesMatch> <FilesMatch \.(css|js)$> Header set Cache-Control "max-age=2592000, public, must-revalidate" </FilesMatch> <FilesMatch \.(swf|pdf|doc|rtf|xls|ppt)$> Header set Cache-Control "max-age=2592000, public, must-revalidate" </FilesMatch> <FilesMatch "\.(js|css|xml|gz)$"> Header set Cache-Control "max-age=2592000, public, must-revalidate" Header append Vary: Accept-Encoding </FilesMatch> </IfModule> FileETag None <IfModule mod_expires.c> ExpiresActive on ExpiresDefault "access plus 1 hours" ExpiresByType text/cache-manifest "access plus 0 seconds" <FilesMatch \.(html|xhtml|xml|shtml|phtml|php|txt)$> ExpiresDefault "access plus 28800 seconds" </FilesMatch> ExpiresByType text/html "access plus 28800 seconds" ExpiresByType text/xml "access plus 28800 seconds" ExpiresByType application/xml "access plus 28800 seconds" ExpiresByType application/json "access plus 28800 seconds" ExpiresByType application/rss+xml "access plus 1 hour" ExpiresByType application/atom+xml "access plus 1 hour" <FilesMatch \.(ico)$> ExpiresDefault "access plus 1 month" ExpiresByType image/x-icon "access plus 1 month" </FilesMatch> <FilesMatch \.(ico|gif|png|jpg|ogg|mp4|flv|swf|wmv|wma|wax|wmx|wm)$> ExpiresDefault "access plus 1 month" </FilesMatch> ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType video/ogg "access plus 1 month" ExpiresByType audio/ogg "access plus 1 month" ExpiresByType video/mp4 "access plus 1 month" ExpiresByType video/webm "access plus 1 month" ExpiresByType text/x-component "access plus 1 month" <FilesMatch \.(eot|ttf|otf|svg|woff)$> ExpiresDefault "access plus 1 year" </FilesMatch> ExpiresByType application/x-font-ttf "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType application/x-font-woff "access plus 1 month" ExpiresByType image/svg+xml "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" <FilesMatch \.(css|js)$> ExpiresDefault "access plus 1 month" </FilesMatch> ExpiresByType text/css "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" <FilesMatch \.(swf|pdf|doc|rtf|xls|ppt)$> ExpiresDefault "access plus 1 month" </FilesMatch> ExpiresByType application/x-shockwave-flash "access plus 1 month" ExpiresByType application/pdf "access plus 1 month" ExpiresByType application/msword "access plus 1 month" ExpiresByType application/rtf "access plus 1 month" ExpiresByType application/vnd.ms-excel "access plus 1 month" ExpiresByType application/vnd.ms-powerpoint "access plus 1 month" </IfModule> AddEncoding gzip .gz <FilesMatch "\.html.gz$"> ForceType text/html Header set Content-Encoding: gzip </FilesMatch> <FilesMatch "\.html$"> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} !".*Safari.*" RewriteCond %{HTTP:Accept-Encoding} gzip RewriteCond %{REQUEST_FILENAME}.gz -f RewriteRule (.*)\.html$ $1\.html.gz [L] ForceType text/html </FilesMatch> <FilesMatch "\.css.gz$"> ForceType text/css Header set Content-Encoding: gzip </FilesMatch> <FilesMatch "\.css$"> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} !".*Safari.*" RewriteCond %{HTTP:Accept-Encoding} gzip RewriteCond %{REQUEST_FILENAME}.gz -f RewriteRule (.*)\.css$ $1\.css.gz [L] ForceType text/css </FilesMatch> <FilesMatch "\.js.gz$"> ForceType text/javascript Header set Content-Encoding: gzip </FilesMatch> <FilesMatch "\.js$"> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} !".*Safari.*" RewriteCond %{HTTP:Accept-Encoding} gzip RewriteCond %{REQUEST_FILENAME}.gz -f RewriteRule (.*)\.js$ $1\.js.gz [L] ForceType text/javascript </FilesMatch>

Существует ещё масса директив, которые здесь отсутствуют. Но это уже тонкости, зависящие непосредственно от сервера на котором живёт ваш сайт.

Желаю удачи !