Что такое 301 редирект?
Сегодня разберемся с 301 редиректом в .htaccess — инструментом, который часто становится спасательным кругом для веб-мастеров. Если вы переезжали на новый домен, меняли структуру сайта или объединяли контент, эта статья поможет перенаправить трафик без потери позиций.
301 редирект - это код ответа сервера, сигнализирующий поисковым системам о постоянном переезде страницы. Представьте, что ваш сайт — это магазин, который переехал в другой район. 301 редирект — это табличка на старом здании, которая направляет клиентов по новому адресу. Важно: в отличие от временного редиректа (302), 301 сообщает, что изменения окончательные.

Зачем он нужен?
- Склейка зеркал. Поисковики воспринимают site.com и www.site.com как разные ресурсы. Редирект объединяет их в один, концентрируя вес.
- Смена домена. Если вы переехали с old-site.ru на new-site.com, старые ссылки продолжат работать.
- Объединение контента. Например, при слиянии двух похожих статей в одну.
SEO-преимущества
Проигнорировать настройку 301 редиректа — все равно что игнорировать VIP-клиентов. Последствия:
- Потеря до 80% органического трафика.
- Падение позиций из-за дублей.
- Накопление битых ссылок в индексе.
В следующем разделе подготовим файл .htaccess к работе. Убедитесь, что у вас есть доступ к корневой директории сайта и FTP-клиент (например, FileZilla).
Подготовка файла .htaccess
Прежде чем настраивать редиректы, убедитесь, что файл .htaccess готов к работе. Это ключевой файл конфигурации для серверов Apache, и его некорректное редактирование может вызвать ошибки на сайте. Вот пошаговая подготовка:
Где находится .htaccess?
Файл располагается в корневой директории вашего сайта. Например:
- Для общего хостинга: /public_html/, www/ или /var/www/your-site/.
- В CMS вроде WordPress: рядом с файлами wp-config.php и index.php.
Если файл отсутствует, его можно создать.
Как создать или отредактировать файл
Через FTP-клиент (FileZilla, WinSCP):
- Подключитесь к серверу.
- Включите отображение скрытых файлов (часто скрыты по умолчанию).
- Если файла нет: создайте текстовый документ, назовите его .htaccess (с точкой в начале!) и загрузите в корневую папку.
Через панель управления хостингом (cPanel, ISPmanager):
- Найдите раздел «Файловый менеджер».
- Перейдите в корень сайта → «Создать файл» → введите имя .htaccess.
Резервное копирование
Перед любыми правками сохраните копию текущего .htaccess. Способы:
- Скачайте файл через FTP и переименуйте в .htaccess_backup.
- В файловом менеджере хостинга создайте дубликат с помощью опции «Копировать».
Почему это важно:
Ошибка в синтаксисе (например, пропущенная скобка) может вызвать ошибку 500 Internal Server Error. Резервная копия позволит быстро откатить изменения.
Проверка прав доступа
Убедитесь, что файл имеет правильные разрешения. Рекомендуемые права: 644 (владелец: чтение/запись, группа и остальные: только чтение).
Как изменить:
- В FTP-клиенте: кликните правой кнопкой → «Права доступа» → введите 644.
- В терминале: chmod 644 .htaccess.
Советы по безопасности
Не добавляйте в .htaccess неизвестные правила — это может открыть уязвимости.
Если сайт перестал работать после правок:
- Переименуйте файл в .htaccess_temp через FTP.
- Проверьте логи ошибок в панели хостинга (раздел «Журналы» или «Логи»).
Пример стартового содержимого
Если файл новый, добавьте базовые настройки:
apache
# Активировать модуль mod_rewrite
RewriteEngine On
# Запретить просмотр содержимого папок
Options -Indexes
# Блокировка доступа к скрытым файлам
<FilesMatch "^\.">
Require all denied
</FilesMatch>
Эти правила включают систему перенаправлений и улучшают безопасность.
Когда файл готов, переходите к изучению синтаксиса редиректов. Если что-то пошло не так — всегда можно восстановить рабочую версию из резервной копии.
Синтаксис и базовые директивы
Работа с редиректами в .htaccess требует понимания основных директив и их параметров. Вот ключевые элементы, которые вам понадобятся:
Redirect 301
Самая простая директива для перенаправления. Синтаксис:
apache
Redirect 301 [старый_путь] [новый_URL]
Пример:
apache
Redirect 301 /old-page.html https://site.com/new-page.html
Что это делает:
При переходе на site.com/old-page.html пользователь автоматически перенаправляется на site.com/new-page.html. Код 301 указывает на постоянное перемещение.
Mod_Rewrite
Для сложных сценариев используется модуль mod_rewrite. Правила начинаются с включения движка:
apache RewriteEngine On
RewriteRule
Синтаксис:
apache
RewriteRule [шаблон] [цель] [флаги]
Пример:
apache
RewriteRule ^blog/(.*)$ /articles/$1 [R=301,L]
Расшифровка:
- ^blog/(.*)$ — ловит URL вида /blog/post-name.
- /articles/$1 — заменяет /blog/ на /articles/.
- R=301 — код редиректа.
- L (Last) — останавливает обработку последующих правил.
RewriteCond
Условия для работы правил. Например, редирект только для определенного домена:
apache
RewriteCond %{HTTP_HOST} ^old-site.com$ [NC]
RewriteRule ^(.*)$ https://new-site.com/$1 [R=301,L]
- %{HTTP_HOST} — проверяет домен запроса.
- [NC] — игнорирует регистр (например, Old-Site.com тоже сработает).
Важные флаги:
- R=301 — постоянный редирект.
- L — последнее правило в цепочке.
- NE — не экранировать спецсимволы (например, пробелы в URL).
Ошибка новичков:
Использование относительных путей вместо абсолютных.
Неправильно:
apache
Redirect 301 /old /new
Правильно:
apache
Redirect 301 /old https://site.com/new
Если ваш сайт использует ЧПУ (человекопонятные URL), тестируйте регулярные выражения в онлайн-сервисах вроде Regex101. Это поможет избежать ошибок в шаблонах.
Практические примеры
Теперь разберем реальные ситуации, с которыми сталкиваются разработчики и SEO-специалисты. Используйте эти примеры как шаблоны, адаптируя их под свой проект.
Пример 1. Переезд домена
Если вы сменили домен (например, с old-site.com на new-site.com), настройте редирект всего трафика:
apache
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old-site.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.old-site.com$ [NC]
RewriteRule ^(.*)$ https://new-site.com/$1 [R=301,L]
Как это работает:
- RewriteCond проверяет, запрашивается ли старый домен (с www или без).
- ^(.*)$ захватывает весь путь после домена (например, /blog/post-name).
- https://new-site.com/$1 подставляет захваченный путь в новый URL.
Ошибка:
Если не указать [NC], редирект не сработает для домена в верхнем регистре (например, Old-Site.Com).
Пример 2. Принудительное использование HTTPS
Перенаправьте весь HTTP-трафик на защищенную версию сайта:
apache
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Пояснение:
- Условие %{HTTPS} off ловит незашифрованные соединения.
- Переменные %{HTTP_HOST} (домен) и %{REQUEST_URI} (путь) сохраняют исходный URL, заменяя протокол на HTTPS.
Проверьте сертификат SSL перед внедрением. Если сертификат недействителен, браузеры заблокируют сайт.
Пример 3. Редирект страницы с параметрами
Перенаправьте страницу вида /product.php?id=123 на новую ЧП-ссылку:
apache
RewriteCond %{QUERY_STRING} ^id=123$
RewriteRule ^product\.php$ /new-product-name? [R=301,L]
Нюансы:
- Символ ? в конце (/new-product-name?) удаляет исходные параметры.
- Если параметры нужны в новом URL, укажите их явно:
apache
RewriteRule ^product\.php$ /new-product-name/%1? [R=301,L]
Пример 4. Удаление слеша в конце URL
Сделайте так, чтобы /page/ и /page считались одним адресом:
apache
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]
Как понять:
- !-d исключает реальные папки (чтобы /real-directory/ не срабатывал).
- ^(.+)/$ ищет URL, заканчивающиеся на /.
- Редирект удаляет завершающий слеш.
Пример 5. Групповые редиректы через регулярные выражения
Перенаправьте все URL из категории /blog/ в /articles/:
apache
RewriteRule ^blog/(.*) /articles/$1 [R=301,L]
Для чего полезно:
- После переименования раздела не нужно прописывать редирект для каждой статьи.
- (.*) захватывает любые символы после /blog/.
Важно:
Если структура путей новая (например, /articles/{year}/{slug}), используйте группировку:
apache
RewriteRule ^blog/([0-9]+)/([a-z-]+) /articles/$1/$2 [R=301,L]
Пример 6. Склейка зеркал (www ⇨ без www)
Уберите www в домене:
apache
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Расшифровка:
- ^www\.(.*)$ захватывает домен после www. (например, site.com).
- %1 вставляет захваченное значение (домен без www).
Рекомендация:
После настройки протестируйте все сценарии:
- Откройте разные URL в режиме инкогнито.
- Проверьте цепочки редиректов через инструменты вроде Redirect Path.
Распространенные ошибки
Даже опытные разработчики иногда допускают ошибки в настройке редиректов. Разберем типичные сценарии и способы их исправления.
Бесконечный редирект
Симптомы: Браузер выводит ошибку «Слишком много переадресаций» или зависает.
Причина: Правила перенаправляют URL по замкнутому кругу.
Пример:
apache
# Ошибка: новую страницу тоже перенаправляем на старую → цикл
Redirect 301 /old-page /new-page
Redirect 301 /new-page /old-page
Решение:
- Проверьте цепочку через Redirect Path.
- Удалите конфликтующие правила или используйте условия RewriteCond.

Относительные пути вместо абсолютных
Симптомы: Редирект ведет на несуществующий URL (например, site.com/subdir/new вместо полного пути).
Ошибка:
apache
Redirect 301 /old /new
# На поддомене sub.site.com это превратится в sub.site.com/new
Решение: Всегда указывайте полный URL в конечной точке.
apache
Redirect 301 /old https://site.com/new
Редирект не срабатывает для HTTPS
Причина: Правило настроено только для HTTP-запросов.
Пример:
apache
# Редирект работает только для HTTP
RewriteCond %{HTTPS} off
RewriteRule (.*) https://site.com/$1 [R=301,L]
Решение: Используйте отдельные правила для HTTPS или обобщите условия.
Неучтенные параметры запроса
Симптомы: После редиректа теряются ?utm_source=xxx или другие метки.
Ошибка:
apache
RewriteRule ^old-page$ /new-page [R=301,L]
# При переходе на /old-page?utm=test параметр исчезнет
Решение: Добавьте флаг QSA (Query String Append), чтобы сохранить параметры:
apache
RewriteRule ^old-page$ /new-page [QSA,R=301,L]
Конфликт правил
Пример:
apache
RewriteRule ^blog/(.*)$ /news/$1 [L,R=301]
RewriteRule ^blog/old-post /special-page [L,R=301]
Первое правило перехватывает все URL вида /blog/..., и второе никогда не сработает.
Решение: Расположите частные случаи выше общих.
apache
RewriteRule ^blog/old-post /special-page [L,R=301]
RewriteRule ^blog/(.*)$ /news/$1 [L,R=301]
Неверные регулярные выражения
Ошибка:
apache
# Пропущен символ экранирования для точки
RewriteRule ^old-page.html /new-page [R=301,L]
# Правило не сработает, так как `.` в регулярках означает любой символ
Решение: Экранируйте спецсимволы (\., \?):
apache
RewriteRule ^old-page\.html$ /new-page [R=301,L]
Отсутствие резервной копии .htaccess
Риск: Ошибка в синтаксисе → сайт выдает 500 Internal Server Error.
Решение:
- Всегда сохраняйте копию файла перед редактированием.
- При ошибке замените битый .htaccess резервной версией через FTP.
Игнорирование кэша браузера
Симптомы: Кажется, что редирект не работает, хотя код верный.
Причина: Браузер кэширует 301 редирект.
Решение:
- Проверяйте через режим инкогнито (Ctrl+Shift+N).
- Используйте инструменты разработчика (вкладка Network → отключите кэш).
Как проверить ошибки:
Логи сервера: В панели хостинга найдите раздел «Журналы ошибок».
curl в терминале:
bash
curl -I http://site.com/old-url
# Ищите строку «Location:» в ответе
Валидаторы синтаксиса:
- htaccess-check
- Воспользуйтесь Apache’s httpd -t (если есть доступ к серверу).
Главный совет:
Тестируйте каждое новое правило пошагово. Добавили одно — проверьте. Работает? Переходите к следующему.
SEO-рекомендации
Редиректы — важный инструмент SEO, но их настройка требует понимания, как поисковые системы обрабатывают изменения. Даже идеальный технически редирект может навредить, если игнорировать эти принципы.
Обновляйте внутренние ссылки
После настройки 301 редиректа:
- Замените старые URL в меню, карточках товаров, баннерах.
- Используйте плагины для массового обновления (например, «Better Search Replace» для WordPress).
Почему это важно:
Редирект передает вес страницы, но прямые ссылки на новый URL ускоряют индексацию.
Обновите карту сайта (sitemap.xml)
- Удалите из sitemap.xml все URL, которые перенаправлены.
- Добавьте новые адреса.
- Отправьте обновленную карту через Google Search Console.
Инструменты для аудита:
- Screaming Frog — проверьте индексируемые страницы.
- XML-Sitemaps.com — генератор sitemap.
Избегайте цепочек редиректов
Что это:
Редирект 1 → Редирект 2 → Редирект 3 → Целевая страница.
Проблемы:
- Потеря скорости загрузки.
- Риск обрыва цепочки (если один из редиректов сломается).
- Снижение SEO-веса: каждый редирект «размывает» ссылочную массу.
Как исправить:
- Используйте инструмент Redirect Path, чтобы найти цепочки.
- Замените их прямыми редиректами:
apache
# Вместо:
Redirect 301 /page-a /page-b
Redirect 301 /page-b /page-c
# Используйте:
Redirect 301 /page-a /page-c
Мониторьте 404 ошибки
Где искать:
- Google Search Console → Отчет «Покрытие».
- Логи сервера (раздел 404 Not Found).
Действия:
- Для важных страниц настройте 301 редирект.
- Для неактуального контента верните код 410 (Gone), чтобы убрать URL из индекса.
- Настройте кастомную 404 страницу с поиском и ссылками на популярные разделы.
Проверьте канонические URL
Убедитесь, что в <head> страницы указан корректный canonical:
html
<link rel="canonical" href="https://site.com/new-page" />
Зачем:
Если canonical старой страницы остался без редиректа, поисковики могут игнорировать изменения.
Учитывайте мобильные и AMP-страницы
- Проверьте редиректы для мобильной версии сайта.
- Если у вас были AMP-страницы (/amp/ или параметры ?amp=1), настройте отдельные правила:
apache
RewriteCond %{QUERY_STRING} ^amp=1$
RewriteRule ^(.*)$ /mobile/$1 [R=301,L]
Не злоупотребляйте редиректами
- Перенаправляйте только те URL, которые реально посещают пользователи или на которые есть внешние ссылки.
- Страницы без трафика (например, временные акции двухлетней давности) лучше закрывать кодом 404 или 410.
Дополнительные рекомендации
- Время отклика сервера: Редиректы добавляют задержку. Оптимизируйте код .htaccess и удаляйте неиспользуемые правила.
- HTTPS + HSTS: Если используете редирект HTTP → HTTPS, добавьте заголовок HSTS для защиты от downgrade-атак:
apache
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" env=HTTPS
Редирект — не «разовая настройка», а часть долгосрочной SEO-стратегии. Регулярный аудит (раз в 3-6 месяцев) и контроль ошибок сохранят позиции и трафик.
Заключение
Настройка 301 редиректов через .htaccess — задача, требующая внимания к деталям. Даже небольшая ошибка в синтаксисе или логике правил может привести к потере трафика, битым ссылкам и долгому восстановлению позиций. Но если все сделано правильно, вы сохраните доверие пользователей и поисковых систем, обеспечив плавный переход на новую структуру сайта.
Если не хотите разбираться самостоятельно — у нас есть услуга «Техническая поддержка сайтов». Наши инженеры настроят редиректы, проведут аудит безопасности и оптимизируют работу .htaccess. Сосредоточьтесь на бизнесе, а технические задачи мы возьмем на себя.
Подписывайтесь на наш Telegram-канал. Не упускайте важное — присоединяйтесь к сообществу профессионалов! Если у вас остались вопросы по редиректам, напишите нам в чат или комментарии. Поможем разобраться!