301 редирект в файле .htaccess: как настроить переадресацию и полюбить это дело

17:54, 11 июня 2020

10 редиректов на каждый день, которые вы будете использовать чаще остальных

Эти редиректы – настолько важная тема в продвижении сайта, что я решил посвятить этому отдельную статью. Но я не буду здесь расписывать для «массы». Существует множество видов редиректов, а опишу я лишь наиболее часто используемые. Признаюсь, что пользуюсь этими командами чуть ли не каждую неделю, если не каждый день. Настроив именно 301 редирект можно избежать множества проблем. Предположим, так называемые дубли или зеркала. Это всё вредит эффективности ранжирования сайта. Почему мы используем именно 301 метод? Да потому что, лишь этот способ передает так необходимый для нас рейтинг страниц, склеивает их вес. Усиливает эффект, проще говоря.

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

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

Для начала убедимся, установлен ли модуль «mod_rewrite» на Apache. Так как в этой статье все правила приведены именно для него. Для этого прописываем:

=============================
<IfModule mod_rewrite.c>

</IfModule>
=============================

Соответственно, все требуемые задачи прописываем между данными тегами RewriteEngine on, дабы они срабатывали. Теперь, чтобы это всё работало, нужно сразу следующей строчкой задать так называемую команду RewriteBase /.

Короче, что должно у вас получится:

==========================
1 <IfModule mod_rewrite.c>

2 RewriteEngine on

3 RewriteBase /

4 </IfModule>

==========================

Пойдем далее по уровню значимости и простоты.

1. Классическая переадресация с одной страницы на другую

Когда используется: в особенности касается реструктуризации, когда сайт переезжает, меняется url-структура. Надеюсь, вы помните, насколько сильное влияние оказывают 404-е страницы на скорость продвижения сайта. Именно поэтому, стараемся их избегать.

==========================================
Redirect 301 /was.php http://www.site.ru/new.php
==========================================

2. В некоторых случаях может быть полезен 301 редирект с помощью RewriteRule

Думаю, здесь уже дело пользовательской привычки. И этот и предыдущий редирект одинаково эффективны. Отмечу, что первый – более понятен и прост для новичка, который только начинает вникать во все эти редиректы, технические особенности.

==========================================
RewriteRule ^dir /dir-new/$1 [R=301,L]
==========================================

3. 301 редирект отдельного файла или страницы, а не папки/категории/раздела

Я не спроста решил выделить этой формуле 3 место в нашем рейтинге часто используемых редиректов. Объясню, почему. Представьте себе, что вам требуется настроить переадресацию только для адреса http://www.nomer1.ru/dir/, но при этом чтобы страница http://www.nomer1.ru/dir/index.php?LOOKTOME открывалась по старому адресу, нужно использовать $ в правиле. То есть, будет выглядеть это таким образом.

==========================================
RewriteRule ^dir/$ http://www.site.ru/new-dir/ [R=301,L]
==========================================

4. 301 редирект со старого домена на новый

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

==========================================
RewriteCond %{HTTP_HOST} ^old-site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.newsite.ru/$1 [R=301,L]
==========================================

Будет уместно сделать то же самое для домена в зоне .рф:

==========================================
RewriteCond %{HTTP_HOST} ^xn- ...\.xn--p1ai$ [NC]
RewriteRule ^(.*)$ http://www.newsite.ru/$1 [R=301,L]
==========================================

Я признаюсь вам, что не особо люблю домены на кириллице. Двигаемся далее.

5. 301 редирект с домена на папку на другом домене

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

==========================================
RewriteCond %{HTTP_HOST} ^si-te\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/si-te/ [R=301,L]
==========================================

6. Смена расширения

Я каждый день встречаю сайты, то с .html, то с .php в конце урла. Иногда требуется сменить расширение без потери веса страницы. Вот, как это происходит.

==========================================
RedirectMatch 301 (.*)\.html$ http://www.newsite.ru$1.php
==========================================

7. 301 редирект всех страниц на защищенный сертификат HTTPS

Пожалуй, одна из самых важных команд. Кстати, хост не всегда автоматом редиректит всё. Наверняка, с опытом, вы замечали, что одни страницы открываются по протоколу https, а некоторые другие нет. Хотя, вроде домен и все страницы склеены, стоят редиректы. Чтобы это исправить используйте директиву:

==========================================
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTP} =on
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
==========================================

8. Убираем все GET-параметры после знака вопроса (?)

А теперь мой любимый чудо-редирект. Скажите «стоп» всем непонятным дублям страниц, которые возникают даже на платформах WordPress или Bitrix. Эта команда позволит раз и навсегда забыть о дублированном контенте, который может генерировать GET-параметр:

==========================================
RewriteRule (.*) $1? [R=301,L]
Располагать после: RewriteBase /
==========================================

9. 301 переадресация с домена с WWW на без WWW

Многие сейчас поспорят, мол, почему этот вид редиректа стоит не на первом месте. И здесь будет ваша правда. Однако, большинство современных CMS-платформ. Bitrix, WordPress. В них ведь изначально прописано главное зеркало. Плюс в большинстве аккаунтов хостингов уже давно внедрена данная функция в технических отметках. Я соглашусь, что основное зеркало с дополнительным (главное с не главным) склеивать крайне важно.

==========================================
RewriteCond %{HTTP_HOST} ^www.yoursite\.ru$ [NC]
RewriteRule ^(.*)$ http://yoursite.ru/$1 [R=301,L]
==========================================

10. 301 редирект с .html или .php на главную страницу/зеркало сайта

Думали забыл? Неа. Он в списке. Напоследок приберег. Помните, что у всех сайтов есть главная страница. Она же не называется изначально в соответствие с названием домена. В папке сайта на вашем хостинге она называется .php или .html. И ее необходимо переадресовать на главное зеркало вот так:

==========================================
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://example.com/ [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://example.com/ [R=301,L]
==========================================

Автор: всё тот же

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