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). Для редактирования:
- Скачайте файл по FTP/SFTP или через файловый менеджер хостинга
- Откройте в текстовом редакторе (Notepad++, Sublime Text — не обычный Блокнот!)
- Внесите изменения и загрузите обратно, сохранив оригинальное имя
Базовый синтаксис редиректов в .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 для сервера. Будьте последовательны.
Как проверить, что редирект работает правильно?
- Используйте онлайн-чекеры редиректов (например, Redirect Checker)
- В браузере откройте старый URL — должно быть автоматическое перенаправление
- Проверьте заголовки ответа сервера через инструменты разработчика (F12 → Network). Должен быть статус 301 и заголовок Location с новым URL.
- Через несколько недель проверьте в Яндекс.Вебмастере и 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 обрабатывается на уровне сервера до попытки доступа к файлу.