301 редирект в htaccess — правильная настройка

Время чтения: 10 минут

Нет времени читать?

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

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

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

Характерные примеры для перенаправления

Классическим примером настройки и использования такой функции можно назвать перенаправление с адреса, содержащего www на не включающий его

RewriteCond %{HTTP_HOST} ^www\.(.*)$

RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

или обратная настройка:

RewriteCond %{HTTP_HOST} ^([^www].*)$

RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]

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

Еще одним распространенной причиной настройки 301 редиректа через htaccess служит канонизация использования слешей в конце адреса. К примеру, чтоб слеш всегда добавлялся:

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !(.*)/$

RewriteRule ^(.*[^/])$ $1/ [L,R=301]

или убирался:

RewriteCond %{HTTP_HOST} (.*)

RewriteCond %{REQUEST_URI} /$ [NC]

RewriteRule ^(.*)(/)$ $1 [L,R=301]

Часто такой функционал применяется для переадресации всех вариантов главной страницы на основной адрес:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*(default|index|main)\.(html|php|htm)\ HTTP/ [NC]

RewriteRule ^(([^/]+/)*)(default|main|index)\.(html|php|htm)$ http://www.site.com/$1 [L,R=301]

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

К примеру, при перекаталогизации может возникнуть необходимость сделать правильное отображение нового URL:

RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2 [R=301,L]

С переездом на другую CMS, часто приходится корректировать расширения, отображаемые в адресе:

RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html

Вполне разумное решение зарегистрировать сразу большой ряд похожих доменов для защиты от фишинга также требуется настройка 301 редиректа htaccess, пример такого использования ниже:

RewriteCond %{HTTP_HOST} !^www\.site\.com

RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

При активной работе с сайтом, с постоянным добавлением новых страниц, нередко приходится убирать “расплодившиеся” идущие подряд слеши:

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$

RewriteRule . %1/%2 [R=301,L]

или дефисы:

RewriteCond %{REQUEST_URI} ^(.*)—(.*)$

RewriteRule . %1-%2 [R=301,L]

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

RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]

RewriteRule ^([^/]+) $1 [L]

RewriteCond %{HTTP_HOST} !^www\.site\.com

RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

 

Распространенные ошибки

В большинстве случаев, когда возникает вопрос почему не работает редирект 301 в htaccess, стоит обратить внимание, не допущена ли одна из следующих распространенных ошибок:

  • Использование многошаговых конструкций.
  • Перенаправление robots.txt вместо вписывания в него нового хоста при перемещении сайта на новый адрес.
  • Наличие перенаправлений на страницы, с которых также происходит редирект.
  • При направлении со старой страницы на нерелевантную ей новую также может пострадать поисковая оптимизация.

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

http://www.webconfs.com/htaccess-redirect-generator.php http://www.rapidtables.com/web/tools/redirect-generator.htm

 

🡒🡒🡒 Читайте также : AMP страницы: что это и нужны ли они