Генератор 301-редиректов

Готовые правила для .htaccess и nginx: переезд на https, склейка www, слэш в конце адреса и перенос старых страниц списком. Всё считается в браузере.

Правила

www в адресе

Слэш в конце адреса

Перед выкладкой сохраните копию текущего .htaccess или конфига nginx и проверьте правила на тестовой копии сайта. Порядок важен: срабатывает первое подходящее правило. Браузер запоминает 301 надолго, поэтому проверяйте в приватном окне или командой curl -I.

(02) — Подробнее

Когда нужен 301-редирект

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

Типичные случаи:

  • переезд с http на https;
  • склейка адресов с www и без, чтобы у сайта был один основной адрес;
  • редизайн или смена CMS, после которых поменялась структура адресов;
  • смена домена;
  • страница удалена, но есть близкая по смыслу замена.

Для временных переездов, например на время акции, есть 302. Если переезд окончательный, нужен именно 301.

Как пользоваться генератором

Укажите домен сайта. В режиме «Готовые правила» отметьте, что нужно: https, www, слэш в конце, чистые адреса вместо index.php. Генератор собирает правила так, чтобы посетитель доходил до основного адреса за один переход, где это возможно: http://www.example.ru сразу ведёт на https://example.ru, без промежуточного шага.

В режиме «Список адресов» вставьте пары «старый адрес — новый», например два столбца из таблицы. Генератор проверит список:

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

Цепочки и петли

Цепочка — это когда /a ведёт на /b, а /b дальше на /c. Сайт продолжает работать, но каждый лишний переход добавляет задержку, а поисковый робот проходит ограниченное число шагов. Цепочки обычно копятся после нескольких редизайнов: правила старого переезда остаются, сверху добавляются новые. Генератор может сразу направить каждый старый адрес на конечный.

Петля — это когда адреса ведут друг на друга по кругу. Браузер показывает ошибку «Слишком много переадресаций», и страница не открывается вообще. Такие строки генератор в правила не включает.

Куда вставлять правила

Apache. Файл .htaccess в корне сайта. Правила редиректов ставьте в начало файла, до правил CMS: у WordPress это блок # BEGIN WordPress, у Битрикса — правила, которые отправляют запросы на urlrewrite.php. На хостинге должен работать mod_rewrite, у большинства хостингов он включён.

nginx. Блок server в конфигурации сайта. После правки проверьте конфиг командой nginx -t и перезагрузите nginx. На чистом nginx файл .htaccess не читается. Если nginx стоит перед Apache, как у многих хостингов, .htaccess обычно работает.

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

Как не сломать сайт

  • Сохраните копию текущего .htaccess или конфига. Если сайт перестал открываться, верните копию: это быстрее, чем искать ошибку.
  • Проверьте на тестовой копии сайта, если она есть.
  • Проверьте все варианты адреса: http и https, с www и без, со слэшем и без. Удобнее всего командой curl -I http://www.example.ru/page: в ответе видно код и заголовок Location.
  • Браузер запоминает 301 и может не пойти на сервер повторно. Проверяйте в приватном окне.
  • Посмотрите настройки CMS: у WordPress и Битрикса есть свой адрес сайта и свои редиректы. Если они спорят с .htaccess, получится петля.
  • Не отправляйте все удалённые страницы на главную. Поисковики считают такие переходы ошибкой. Лучше вести на ближайший раздел или честно отдавать 404.
(03) — Вопросы

Вопросы.

Чем 301-редирект отличается от 302?
301 — переезд навсегда: поисковик заменяет в индексе старый адрес новым. 302 — временный: в индексе остаётся старый адрес. Для смены структуры, https и склейки www нужен 301.
Сколько держать редиректы после переезда?
Пока на старые адреса идут переходы: из поиска, закладок, чужих сайтов, старых рассылок. Обычно это годы. Правила почти не нагружают сервер, поэтому удалять их без причины не стоит.
Что выбрать: Redirect 301 или RewriteRule?
RewriteRule точнее: правило срабатывает только для указанного адреса и умеет работать с параметрами. Redirect проще, но перенаправляет всё, что начинается с указанного пути: /old/page уйдёт на /new/page. Если в .htaccess уже есть RewriteRule, например от CMS, используйте RewriteRule и для редиректов.
Почему после вставки правил «слишком много переадресаций»?
Чаще всего из-за петли: правило в .htaccess спорит с настройкой адреса в CMS или с редиректом на стороне хостинга. Вторая частая причина — сайт за прокси или CDN, где Apache всегда видит http. Для этого случая в генераторе есть отдельная галочка.
Можно ли перенаправлять адреса с параметрами, например ?id=15?
Да. В режиме списка такие адреса получают отдельное правило: для Apache — RewriteRule с условием на строку параметров, для nginx — проверка $request_uri. Правило срабатывает только при точном совпадении строки параметров, включая их порядок.
Генератор отправляет мои адреса на ваш сервер?
Нет. Правила собираются в браузере, на сервер ничего не уходит. Можно проверить на вкладке «Сеть» в инструментах разработчика.
(04) — Студия

Переезжаете на новый сайт и боитесь потерять позиции?

Составим карту редиректов для всех старых адресов, проверим цепочки и петли, настроим сервер и проследим за индексацией после переезда.