HTACCESS: настраиваем редиректы, ускоряем работу сайта и другие полезные функции

Настройка файла .htaccess не ограничиваются одними лишь редиректами, как полагают многие. Этот файл способен на гораздо большее количество полезных функций, которые помогут при продвижении сайта.

Файл .htaccess могут и должны использовать не только программисты, но и оптимизаторы, ведь с его помощью можно добиться заметного ускорения работы сайта.

В .htaccess можно прописать различные настройки, которые помогут в оптимизации сайта:
— настроить 301-е редиректы;
— настроить главное зеркало сайта;
— ускорить загрузку страниц;
— запретить нежелательным ботам посещать сайт;
— обеспечить безопасность всего сайта и его отдельных разделов.

Где находится файл с настройками Apache

Первый пункт — создание файла .htaccess. Его создают в программе «Блокнот», затем размещают в корневом каталоге сайта.

Что помещают в файл .htaccess

В данном файле следует расписать правила работы для ядра Apache, а также для различных подключаемых модулей, например, mod_rewrite.

Перед каждым комментарием ставится символ #, который не дает серверу обработать данную строку. Возможность комментирования даже небольшого кода позволит вам даже по прошествии длительного промежутка времени вспомнить все особенности настроек.

  1. Исключение дублей главной страницы.

Необходимо верно настроить .htaccess, чтобы не возникало таких ситуаций, когда поисковая система добавляет в индекс несколько одинаковых страниц. Для исключения подобных проблем в код добавляют следующие строки:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^yoursite.ru
RewriteRule (.*) http://www.yoursite.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.html HTTP/
RewriteRule ^index.html$ http://www.yoursite.ru/ [R=301,L]

  1. Страница 404 со строго прописанным URL

Для открытия сервером именно той страницы, что вам необходимо, следует добавить следующую строку:  ErrorDocument 404 http://www.yousite.ru/404.php. Этот же тескт возможно указывать и для других типов ошибок.

  1. Редирект

Для перенаправления с одной страницы на другую следует использовать Redirect, а для групповой перенаправленности используют RedirectMatch,

  1. Открытие файлов

На сервере следует настроить принудительное сохранение типов файлов, которые не должны открываться в браузере. Например, AddType application/octet-stream .rar .doc .mov .avi .pdf .xls .mp4

  1. Настройка URL

Практическая любая CMS позволяет использовать настройки, которые преображают непонятные и длинные URL в короткие и внятные.

  1. Слэш в конце URL

Страницы со слэшем в конце и без него могут индексироваться поисковой системой как разные, поэтому следует прописать следующий код:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [R=301,L]

Ускорение загрузки сайта

Первым делом, рекомендуется сжать файлы скриптами на сервере, чтобы они передавались пользователю в сжатом виде. В .htaccess можно включить сжатие при помощи двух модулей — mod_zip и mod_deflate. Они практически идентичны по качеству сжатия.


mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*

Затем, усиливаем кеширование. Этот комплекс команд поможет быстрой загрузке сайта для тех посетителей, которые уже на нем были. Браузер не будет заново скачивать картинки и скрипты с сервера, а использует данные из кэша.


ExpiresActive On
ExpiresDefault "access 7 days"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType text/css "access plus 1 year"
ExpiresByType text/html "access plus 7 day"
ExpiresByType text/x-javascript "access 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/x-icon "access 1 year"
ExpiresByType application/x-shockwave-flash "access 1 year"

Блокировка ботов и нежелательных пользователей

Снижение нагрузки на сайт за счет блокировки нежелательных посетитлей и ботов пойдет сайту только на пользу! Итак, если вы обнаружили какой-то подозрительный трафик с постороннего ресурса, блокируем его:


RewriteEngine on
RewriteCond %{HTTP_REFERER} bad-site.com [NC,OR]
RewriteCond %{HTTP_REFERER} bad-site.com [NC,OR]
RewriteRule .* - [F]

Если вы видите что сайт атакуют боты, которые неизвестно чем на нем занимаются и только нагружают сайт, то вот вам список ботов, которые мы рекомендуем блокировать:

RewriteCond %{HTTP_USER_AGENT} Java [OR]
RewriteCond %{HTTP_USER_AGENT} NjuiceBot [OR]
RewriteCond %{HTTP_USER_AGENT} Gigabot [OR]
RewriteCond %{HTTP_USER_AGENT} Baiduspider [OR]
RewriteCond %{HTTP_USER_AGENT} JS-Kit [OR]
RewriteCond %{HTTP_USER_AGENT} Voyager [OR]
RewriteCond %{HTTP_USER_AGENT} PostRank [OR]
RewriteCond %{HTTP_USER_AGENT} PycURL [OR]
RewriteCond %{HTTP_USER_AGENT} Aport [OR]
RewriteCond %{HTTP_USER_AGENT} DotBot [OR]
RewriteCond %{HTTP_USER_AGENT} SurveyBot [OR]
RewriteCond %{HTTP_USER_AGENT} larbin [OR]
RewriteCond %{HTTP_USER_AGENT} Butterfly [OR]
RewriteCond %{HTTP_USER_AGENT} libwww [OR]
RewriteCond %{HTTP_USER_AGENT} Wget [OR]
RewriteCond %{HTTP_USER_AGENT} SWeb [OR]
RewriteCond %{HTTP_USER_AGENT} LinkExchanger [OR]
RewriteCond %{HTTP_USER_AGENT} Soup [OR]
RewriteCond %{HTTP_USER_AGENT} WordPress [OR]
RewriteCond %{HTTP_USER_AGENT} PHP/ [OR]
RewriteCond %{HTTP_USER_AGENT} spbot [OR]
RewriteCond %{HTTP_USER_AGENT} MLBot [OR]
RewriteCond %{HTTP_USER_AGENT} InternetSeer [OR]
RewriteCond %{HTTP_USER_AGENT} FairShare [OR]
RewriteCond %{HTTP_USER_AGENT} Yeti [OR]
RewriteCond %{HTTP_USER_AGENT} Birubot [OR]
RewriteCond %{HTTP_USER_AGENT} YottosBot [OR]
RewriteCond %{HTTP_USER_AGENT} gold\ crawler [OR]
RewriteCond %{HTTP_USER_AGENT} Linguee [OR]
RewriteCond %{HTTP_USER_AGENT} Ezooms [OR]
RewriteCond %{HTTP_USER_AGENT} lwp-trivial [OR]
RewriteCond %{HTTP_USER_AGENT} Purebot [OR]
RewriteCond %{HTTP_USER_AGENT} User-Agent [OR]
RewriteCond %{HTTP_USER_AGENT} kmSearchBot [OR]
RewriteCond %{HTTP_USER_AGENT} SiteBot [OR]
RewriteCond %{HTTP_USER_AGENT} CamontSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ptd-crawler [OR]
RewriteCond %{HTTP_USER_AGENT} HTTrack [OR]
RewriteCond %{HTTP_USER_AGENT} suggybot [OR]
RewriteCond %{HTTP_USER_AGENT} ttCrawler [OR]
RewriteCond %{HTTP_USER_AGENT} msnbot [OR]
RewriteCond %{HTTP_USER_AGENT} MSNBot-media [OR]
RewriteCond %{HTTP_USER_AGENT} Nutch [OR]
RewriteCond %{HTTP_USER_AGENT} Zeus [OR]
RewriteCond %{HTTP_USER_AGENT} Exabot

Безопасность сайта

И, в заключении, чтобы позаботиться о безопасности настраиваем редирект для всех внешних запросов к базе данных сайта на сайт microsoft.com

redirect /admin.php http://www.microsoft.com
redirect /DOCUMENT_ROOT http://www.microsoft.com
redirect /_mem_bin http://www.microsoft.com
redirect /msadc http://www.microsoft.com
redirect /scripts http://www.microsoft.com
redirect /_vti_bin http://www.microsoft.com
redirect /_vti_inf.html http://www.microsoft.com
redirect /phpmy/scripts/setup.php http://www.microsoft.com
redirect /phpmyadmin/scripts/setup.php http://www.microsoft.com
redirect /php/scripts/setup.php http://www.microsoft.com
redirect /phpMy/scripts/setup.php http://www.microsoft.com
redirect /_phpmyadmin/scripts/setup.php http://www.microsoft.com
redirect /pma/scripts/setup.php http://www.microsoft.com
redirect /admin/scripts/setup.php http://www.microsoft.com
redirect /MyAdmin/scripts/setup.php http://www.microsoft.com
redirect /sql/scripts/setup.php http://www.microsoft.com
redirect /mysql/scripts/setup.php http://www.microsoft.com
redirect /setup.php?dir http://www.microsoft.com
redirect /MSOffice/cltreq.asp http://www.microsoft.com
redirect /(null) http://www.microsoft.com
redirect ///?_SERVER[DOCUMENT_ROOT] http://www.microsoft.com
redirect //?_SERVER[DOCUMENT_ROOT] http://www.microsoft.com
redirect /assets/snippets/reflect/snippet.reflect.php? http://www.microsoft.com
redirect /pagead/test_domain.js http://www.microsoft.com
redirect /pagead/osd.js http://www.microsoft.com
redirect /pagead/expansion_embed.js http://www.microsoft.com
redirect /pagead/render_ads.js http://www.microsoft.com
redirect /pagead/atf.js http://www.microsoft.com
redirect /.svn/entries http://www.microsoft.com
RedirectMatch (.*)\cmd.exe$ http://www.microsoft.com$1

Что мы имеем в итоге

Набор команд в одном файле способен заметно ускорить работу сайта и дополнительно его обезопасить.

Не забудьте создать копию файла .htaccess перед тем как начнете его корректировать.