1471
How-to Читать 17 минут

Что такое htaccess

Как настроить htaccess
Анастасия Сотула
Анастасия Сотула
Редактор блога Serpstat
Когда вебмастер или SEO-оптимизатор не умеет работать с htaccess, то теряет массу уникальных возможностей. От создания красивых ссылок до быстрого удаления дублей страниц из индексной базы поисковиков.

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

Файл htaccess – что это?


В процессе оптимизации работы сайтов их владельцы рано или поздно сталкиваются с проблемами, которые решаются на уровне сервера. У них обязательно возникают вопросы, что за файл htaccess, и почему он часто упоминается в тематических статьях? Давайте разберемся подробнее.

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

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

Задаваемые в htaccess правила распространяются на папку, где размещается файл и все директории, расположенные внутри нее. Ситуация меняется после создания htaccess в той или иной поддиректории. Отметим, что локальная конфигурация доступна при условии, что это разрешено сервером. Большинство дешевых хостингов данную функцию поддерживает.

Как создать файл htaccess?


Перед тем как создать файл htaccess, нужно сделать своего рода «болванку». Идеальный вариант — простой текстовый файл. Для его создания нажмите правой кнопкой мыши по свободному пространству какой-либо папки или рабочего стола. Затем выберите «Создать» и в выпадающем списке отметьте «Текстовый документ».
создание .htaccess в блокноте
Создание файла .htaccess
Откройте текстовый файл, выберите «Файл» и «Сохранить как». В появившемся окне в поле «Имя файла» скопируйте .htaccess, а «Тип файла» поменяйте на «Все файлы». В конце нажмите «Сохранить». Готово! Будьте внимательны при задании имени файла. Оно должно состоять из точки и htaccess. Никаких пробелов и дополнительных символов.
Сохранение файла htaccess в текстовом редакторе
Сохранение файла htaccess
Будьте внимательны при задании имени файла. Оно должно состоять из точки и htaccess. Никаких пробелов и дополнительных символов.
Отсутствие ошибок в названии файла .htaccess
Проверка названия файла .htaccess

Синтаксис htaccess

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

Если открыть htaccess «Битрикс», Drupal, Joomla или другой популярной CMS, внутри окажется перечисление команд. В документации они обозначаются как директивы. Каждая из них пишется на отдельной строке.

Когда требуется написать комментарии в htaccess, перед ними ставится знак # (решетка). Начинающиеся с нее строки сервер игнорирует. Удобно, что изменения вступают в силу после сохранения файла. Перезагружать Apache не надо.
файл htaccess для WordPress
На картинке представлен стандартный файл htaccess для CMS WordPress
файл htaccess для Joomla
На изображении пример файла htaccess для CMS Joomla. Точнее, его начало. На момент написания статьи он включал 166 строк. Разработчики постарались максимально доходчиво объяснить, с чем именно предстоит иметь дело конечным пользователям.
Наряду с директивами в htaccess используются переменные и регулярные выражения. Подробно мы их не рассматриваем. Те же «регулярки» — настолько объемная тема, что по ней пишутся книги на сотни страниц. Однако на основных моментах остановимся.

Наиболее распространенные спецсимволы регулярных выражений

Примеры переменных

Официальную документацию по htaccess читайте здесь.

htaccess защита сайта

Надежная защита сайта через htaccess вполне возможна, если хорошо разобраться в особенностях настройки сервера и понять, что и для чего блокировать. Скажем, с помощью прописанных в htaccess правил защищаются файлы, настраиваются права доступа по IP и выставляются пароли на директории. Чтобы приблизительно понять, как это работает, рассмотрим пример.
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]
Приведенный выше набор директив решает 2 важные задачи — защищает сайт от скрипт-инъекций и изменяет запросы или глобальные переменные. Вначале активируется контроль символических ссылок. Под ними следует понимать спецфайлы, где вместо предназначенных для пользователей данных хранятся пути к файлам, которые открываются при обращении к ссылкам.

Вслед за контролем сим-ссылок запускается механизм перезаписи адресов страниц. Далее блокируются ссылки с тегами <script> и сторонние скрипты для изменения переменных языка программирования PHP GLOBALS и REQUEST. В конце подозрительные запросы перенаправляются на страницу с ошибкой 403. Тем самым затрудняется жизнь злоумышленников, которые пытаются взломать сайт.

Мало что поняли? Не страшно! Даже если поверхностно разбираетесь в правилах htaccess, никто не мешает пользоваться чужими разработками. Вы можете без проблем взять показанный нами набор директив и использовать на сайте. Веб-сервер Apache активно применяется уже десятки лет. Найти готовое решение зачастую не составляет труда. Это экономит время и предотвращает грубые ошибки.

Вывод ошибок htaccess

Временами на сайтах появляются не загружающиеся страницы. При обращении к ним вместо контента пользователи видят белый экран, что говорит о наличии ошибок. Как их посмотреть? Если «движок» сайта написан на PHP, вывод ошибок в htaccess настраивается одной директивой – php_flag_display_errors on. Отключение выполняется тоже элементарно. Достаточно прописать php_flag_display_errors off.

301 редирект htaccess

SEO-оптимизаторы постоянно используют 301 редирект в htaccess. Делается это для повышения эффективности поискового продвижения. В первую очередь путем перенаправлений удаляются ненужные страницы из индекса поисковиков.

Перед тем как прописать 301 редирект в htaccess, оптимизатор анализирует сайт и находит мешающие продвижению странички. Чаще всего они содержат ошибки и дубли контента. Отбор страниц выполняется вручную или автоматически.

На следующем этапе специалист продумывает, как настроить 301 редирект htaccess с максимальной эффективностью. Одно дело, когда удаляются 10-20 страниц, и совсем другое — тысячи. К составлению директив требуются совершенно разные подходы.

В конечном итоге оптимизатор подбирает оптимальный вариант, как сделать 301 редирект через htaccess, и приступает к написанию серверных инструкций. При условии, что они составлены правильно, страницы исчезают из индекса. Происходит это так.

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

Постраничный редирект 301 htaccess

На практике 301 редирект с одной страницы на другую представляется в виде простой инструкции. Синтаксис следующий:

Redirect 301 http://www.mysite.com/page_01.php http://www.mysite.com/page_02.php.

Сперва пишется указание, что это редирект. Следом прописывается, с какой страницы и куда перенаправлять.

Интересно, что похожей практикой пользуются веб-программисты при написании систем управления контентом. Специалисты применяют htaccess редирект всех страниц на одну — главную. В основном это index.php. Страничка является своего рода точкой входа в веб-приложение. Туда уходят все запросы, где ПО сайта производит их разбор. Директивы для перенаправления всех страниц на одну выглядят так:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php/$1 [L,QSA]

htaccess редирект на другой домен

RewriteEngine On
RewriteCond %{HTTP_HOST} mysite_01.com
RewriteRule (.*) http://mysite_02.com/$1 [R=301,L]
Вебмастера хотят включить 301 переадресацию с сайта на другой домен в htaccess по разным причинам. Одна из самых распространенных — перенос проекта на альтернативное доменное имя. Допустим, с бесплатного на платное.

Составлять htaccess 301 редирект на новый домен надо крайне аккуратно. Малейшая ошибка способна привести к выпадению целых разделов из индекса. Лучше писать правила постепенно и предварительно тестировать на локальном сервере.

Нужен 301 редирект htaccess с одного домена на другой и при наличии 2 или более имен. Предположим, главный сайт имеет 2 адреса — mysite.com и my-site.com. Первый — главный, а второй — вспомогательный. С него и идет перенаправление.

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

Среди прочего htaccess редирект на другой сайт оптимален для склеивания зеркал. В интернете зеркалами считаются сайты с одинаковым контентом, но разными доменными именами. Грамотно настроенные перенаправления избавляют от массы проблем с SEO.

В целом, перенаправление на другой сайт через htaccess – весьма распространенный метод. К нему прибегают как в SEO, так и в служебных целях. В особенности это характерно для высоконагруженных интернет-проектов.

htaccess редирект с поддомена на домен

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(.+).mysite.com$
RewriteRule (.*) https://mysite.com/$1 [L,R=301,QSA]

Не работает 301 редирект через htaccess

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

Редирект на мобильную версию сайта htaccess

RewriteEngine On
RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^ http://m.mysite.com%{REQUEST_URI} [R,L]

Другие htaccess редиректы

Как сделать поддомен через htaccess?

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

Redirect /category http://category.mysite.com.

Быстрое создание субдоменов поддерживает панель управления любого платного хостинга.

htaccess настройка кэширования

Эффективная настройка кэширования через файл htaccess возможна, если он размещается в корневой папке сайта. Прописанные в нем правила распространяются на директорию и ее подпапки. Глубина вложения поддиректорий значения не имеет.
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
Через htaccess кэш браузера обновляется не только в пределах указанных периодов. Для тех же картинок можно прописать «access 1 month» вместо «access 1 year». И наоборот, для документов в формате PDF «access 1 month» легко заменить на «access 1 year».

Другие возможности htaccess

В этом подразделе статьи мы познакомим вас с полезными особенностями htaccess, которые пригодятся для технической и поисковой оптимизации сайта.

htaccess перенаправление в другую папку из корня

RewriteEngine On
RewriteRule ^$ /some_directory [L]

htaccess перенаправление на файл из корня

RewriteEngine on
RewriteRule ^.+$ /some_file.php [L]

Замена Роботс или как закрыть сайт от индексации htaccess

SetEnvIfNoCase User-Agent "^Yandex" search_bot
SetEnvIfNoCase User-Agent "^Yahoo" search_bot
SetEnvIfNoCase User-Agent "^igdeSpyder" search_bot
SetEnvIfNoCase User-Agent "^Robot" search_bot
SetEnvIfNoCase User-Agent "^Googlebot" search_bot
SetEnvIfNoCase User-Agent "^msnbot" search_bot
SetEnvIfNoCase User-Agent "^Aport" search_bot
SetEnvIfNoCase User-Agent "^Mail" search_bot
SetEnvIfNoCase User-Agent "^bot" search_bot
SetEnvIfNoCase User-Agent "^spider" search_bot
SetEnvIfNoCase User-Agent "^php" search_bot
SetEnvIfNoCase User-Agent "^Parser" search_bot
Order Allow,Deny
Allow from all
Deny from env=search_bot

Блокировка ботов htaccess

BrowserMatchNoCase "Baiduspider" bots
BrowserMatchNoCase "SemrushBot" bots
BrowserMatchNoCase "Yandex" bots
BrowserMatchNoCase "BLEXBot" bots
BrowserMatchNoCase "AhrefsBot" bots
BrowserMatchNoCase "DotBot" bots
BrowserMatchNoCase "Exabot" bots
BrowserMatchNoCase "SeznamBot" bots
BrowserMatchNoCase "aiHitBot" bots
BrowserMatchNoCase "spbot" bots
BrowserMatchNoCase "MJ12bot" bots
BrowserMatchNoCase "oBot" bots
BrowserMatchNoCase "DeuSu" bots
BrowserMatchNoCase "ia_archiver" bots
BrowserMatchNoCase "MetaURI" bots
BrowserMatchNoCase "FlipboardProxy" bots
Order Allow,Deny
Allow from ALL
Deny from env=bots

htaccess редирект из папки на главную

RedirectMatch 301 ^/directory/$ http://mysite.com/

htaccess запретить доступ к файлу

<Files "some_file.txt">
Order Deny,Allow
Deny from all
</Files>

htaccess редирект в другую папку

RewriteEngine on
RewriteBase /
RewriteRule ^first_directory/(.*)$ /second_directory [R=301,L]

htaccess кодировка

AddDefaultCharset UTF-8

htaccess разрешить доступ к папке

Options -Indexes
Order Deny,Allow
Allow from all

htaccess редирект без слеша на слеш в конце

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

Что делать, если не работает htaccess?

  1. Сайт на хостинге. Когда появляется 500 ошибка, значит, сервер обрабатывает файл. Сделайте резервную копию htaccess, удалите содержимое и напишите простую директиву. Если оповещение с кодом 500 исчезнет, присутствуют неточности в правилах. Надо найти и устранить. При отсутствии реакции веб-сервера обращайтесь в саппорт. Иначе рискуете безрезультатно потратить время.

  2. Веб-сайт на локальном сервере. Здесь все гораздо сложнее, потому что за работу веб-сервера отвечаете лично вы. Допустим, директивы написаны правильно и дело не в нарушении синтаксиса. Для начала установите программу с нуля и проверьте, как работает htaccess с настройками по умолчанию. Не помогло? Обратитесь в службу поддержки Apache или создайте тему в профильном сообществе наподобие StackOverflow.

FAQ

Как подключить htaccess?

Чтобы включить htaccess, откройте файл с настройками веб-сервера Apache и найдите строку AllowOverride None. Замените None на All.

Для чего нужен htaccess файл?

  1. Авторизация.
  2. Аутентификация.
  3. Определение собственных страниц с ошибками.
  4. Создание красивых адресов.
  5. Оптимизация кэширования с целью снижения нагрузки на веб-сервер.
  6. Переопределение главных настроек Apache.

Сколько 301 редиректов можно прописать в htaccess?

Неограниченное количество. Учтите, что не рекомендуется злоупотреблять числом перенаправлений или создавать многоуровневые правила, когда страница А отправляет пользователей на страничку Б, а та на В, откуда на Г и т. д.

Как найти и где находится htaccess?

Обычно файл размещается в корневой папке сайта. Иногда он находится в подпапках.

На каком языке написан htaccess?

Файл не включает программный код, а содержит набор директив для веб-сервера. Синтаксис заимствован из XML. Применяются также регулярные выражения. Пишутся инструкции на английском языке.

Существует ли онлайн-генератор редиректов htaccess?

Да, существуют онлайн-генераторы редиректов htaccess. Функционал подобных онлайн-сервисов значительно отличается. Как вариант, на этом сайте создаются простейшие редиректы между двумя страницами, а этот сервис уже предоставляет больше возможностей.

Заключение

Если перед вами стоит много задач по настройке сервера через htaccess, не пытайтесь быстро решить все. Вначале настройте редиректы. Потом кэширование. На третьем этапе разберитесь со страницами ошибок. Полагаем, общая идея понятна. Планомерное конфигурирование снизит вероятность появления ошибочных правил, что положительно отразится на поисковом продвижении и работе сайта.
Чтобы быть в курсе всех новостей блога Serpstat, подписывайтесь рассылку. А также вступайте в чат любителей Серпстатить и подписывайтесь на наш канал в Telegram.

Сэкономьте время на изучении Serpstat

Хотите получить персональную демонстрацию сервиса, тестовый период или эффективные кейсы использования Serpstat?

Оставьте заявку и мы свяжемся с вами ;)

Оцените статью по 5-бальной шкале

5 из 5 на основе 4 оценок
Нашли ошибку? Выделите её и нажмите Ctrl + Enter, чтобы сообщить нам.

Поделитесь статьей с вашими друзьями

Вы уверены?

Знакомство с Serpstat

Узнайте об основных возможностях сервиса удобным способом!

Отправьте заявку и наш специалист предложит вам варианты обучения: персональную демонстрацию, пробный период или материалы для самостоятельного изучения и повышения экспертизы. Все для комфортного начала работы с Serpstat.

Имя

Email

Телефон

Будем рады вашему комментарию
Я принимаю условия Политики конфиденциальности.

Спасибо, мы сохранили ваши новые настройки рассылок.

Сообщить об ошибке

Отменить

Мы используем файлы cookie для обеспечения работоспособности сервиса, улучшения навигации и маркетинговых активностей Serpstat. Нажимая "Принять и продолжить", вы соглашаетесь с нашей Политика конфиденциальности

Открыть чат технической поддержки
mail pocket flipboard Messenger telegramm