301 редирект в .htaccess: Полное руководство для чайников и профи

301 редирект в .htaccess: Полное руководство для чайников и профи

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

Что такое 301 редирект и зачем он нужен?

301 редирект (Moved Permanently) — это постоянное перенаправление с одного URL на другой. В отличие от временного 302 редиректа, он сообщает поисковым системам, что страница перемещена навсегда, и весь «вес» (PageRank, ссылочная масса) должен передаться новому адресу. Это критически важно при:

  • Смене домена (site.ru → new-site.ru)
  • Переходе с HTTP на HTTPS
  • Изменении структуры URL (старые ЧПУ на новые)
  • Удалении дублей страниц (с www и без, с слешем и без)
  • Объединении контента (редирект со старой статьи на обновленную)

Поисковые системы могут индексировать новый адрес после 301 редиректа не мгновенно, а в течение нескольких недель. Трафик со старого URL обычно начинает падать сразу, а на новый — постепенно расти.

Где находится и как редактировать .htaccess?

Файл .htaccess — это конфигурационный файл для веб-сервера Apache (и некоторых других). Он находится в корневой директории вашего сайта (там же, где index.php или index.html). Для редактирования:

  1. Скачайте файл по FTP/SFTP или через файловый менеджер хостинга
  2. Откройте в текстовом редакторе (Notepad++, Sublime Text — не обычный Блокнот!)
  3. Внесите изменения и загрузите обратно, сохранив оригинальное имя

Базовый синтаксис редиректов в .htaccess

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

RewriteEngine On

Без этой директивы редиректы работать не будут.

Практические примеры 301 редиректов

1. Редирект с одного конкретного URL на другой

Redirect 301 /old-page.html https://site.ru/new-page/

Или с использованием RewriteRule:

RewriteRule ^old-page\.html$ /new-page/ [R=301,L]

2. Редирект всего сайта с HTTP на HTTPS

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

3. Редирект с www на без www (или наоборот)

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

4. Редирект при смене домена

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

Всегда тестируйте редиректы на копии сайта или в песочнице! Одна ошибка в .htaccess может «положить» весь сайт, вызвав циклические перенаправления (redirect loop).

5. Массовые редиректы через регулярные выражения

Если вы меняете структуру URL (например, с /blog/post-123 на /articles/123):

RewriteRule ^blog/post-(\d+)$ /articles/$1 [R=301,L]

Здесь (\d+) — регулярное выражение, захватывающее цифровой ID поста.

Частые ошибки и как их избежать

  • Циклические редиректы: Когда страница А перенаправляет на Б, а Б — обратно на А. Проверяйте цепочки.
  • Потеря параметров: При редиректе вида /page?param=value используйте [QSA] (Query String Append) флаг: [R=301,L,QSA].
  • Кэширование браузера: После настройки очистите кэш браузера или проверяйте в режиме инкогнито.
  • Отсутствие слеша: /page и /page/ — это разные URL для сервера. Будьте последовательны.

Как проверить, что редирект работает правильно?

  1. Используйте онлайн-чекеры редиректов (например, Redirect Checker)
  2. В браузере откройте старый URL — должно быть автоматическое перенаправление
  3. Проверьте заголовки ответа сервера через инструменты разработчика (F12 → Network). Должен быть статус 301 и заголовок Location с новым URL.
  4. Через несколько недель проверьте в Яндекс.Вебмастере и Google Search Console, как индексируются новые URL.

FAQ: Ответы на частые вопросы

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

Полная передача ссылочного веса в Google обычно занимает несколько месяцев. Яндекс может реагировать быстрее — от 2-4 недель.

Можно ли делать цепочки редиректов (А → Б → В)?

Технически — да, но это замедляет загрузку и ухудшает пользовательский опыт. Старайтесь делать прямое перенаправление А → В.

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

1. Проверьте, поддерживает ли хостинг Apache и модуль mod_rewrite.
2. Убедитесь, что в настройках хоста разрешено использование .htaccess.
3. Проверьте синтаксис — одна лишняя точка или пробел могут сломать всё.

Чем отличается Redirect от RewriteRule?

Redirect — более простая директива для базовых перенаправлений. RewriteRule — часть мощного модуля mod_rewrite, позволяющая использовать регулярные выражения и условия (RewriteCond).

Нужно ли оставлять старые URL после настройки редиректов?

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