Pugofka Logo

Pugofka / Tools / Генераторы

Генератор правил редиректов для nginx и Apache

Создайте точные правила 301 или 308 из карты старых и новых URL. Дубли, конфликты, циклы и цепочки проверяются в браузере.

Одна пара на строку. Разделители: ->, точка с запятой, запятая или табуляция. Старый и новый адрес могут быть абсолютными URL или путями от корня.

Код ответа
Query string

Чем отличаются 301, 302, 307 и 308

301 и 308 сообщают, что адрес изменился постоянно. Для обычного переезда страниц чаще используют 301. Код 308 дополнительно гарантирует сохранение HTTP-метода и тела запроса, поэтому подходит для адресов, куда отправляют POST и другие методы.

302 и 307 обозначают временное перенаправление. Код 307 сохраняет метод, а поведение 302 для не-GET запросов исторически зависит от клиента. Генератор создаёт только постоянные 301 и 308. После установки правил проверьте карту редиректов, конечные ответы и отсутствие цепочек.

Как настроить редиректы в nginx

Генератор создаёт map с точными ключами для старых путей. Разместите блок map в контексте http, а условие с return — внутри нужного server. Для каждого пути учитываются варианты с завершающим слэшем и без него; похожий адрес вроде /old-page-extra не совпадёт.

В режиме «Игнорировать» ключом служит декодированный $uri: параметры не влияют на выбор правила, но исходный query сохраняется в новом URL, если у цели нет своего query. Если у цели есть параметры, используются только они. При точном режиме используется исходный $request_uri с URL-кодированием: параметры и их порядок должны совпасть с картой, а исходный query после редиректа отбрасывается. После изменения выполните nginx -t и только затем примените конфигурацию командой reload.

Как настроить редиректы в Apache (.htaccess)

Добавьте созданные правила в .htaccess корня сайта или в конфигурацию виртуального хоста. На сайте 1С-Битрикс ставьте блок до правил, которые направляют запрос на urlrewrite.php: после них наши RewriteRule уже не сработают. Для работы файла сервер должен разрешать соответствующие директивы через AllowOverride. Перед публикацией проверьте конфигурацию командой apachectl configtest или httpd -t.

В режиме «Игнорировать» обычно используется RedirectMatch с якорями начала и конца: исходный query сохраняется, если у цели нет своего. Для цели с якорем # и без своего query генератор использует RewriteCond и две RewriteRule, чтобы параметры оказались перед якорем: /faq?utm=x#section. В точном режиме Apache 2.4 использует RewriteCond для сравнения параметров и RewriteRule с флагами QSD и NE для удаления исходного query и сохранения кодирования цели. Шаблоны работают как в .htaccess, так и в виртуальном хосте. Regex-символы декодированного пути экранируются.

Частые ошибки при массовом переезде

Префиксные правила перехватывают лишние страницы, а цепочки вида A → B → C заставляют браузер и робота делать дополнительные запросы. Генератор блокирует дубли, конфликты и циклы, а цепочки показывает как предупреждения с предложением сразу направить A на C.

Заранее решите, должны ли query-параметры участвовать в сопоставлении. Проверьте оба варианта URL со слэшем, переход с HTTP на HTTPS и основное зеркало домена. Конфигурация из генератора относится к карте путей; правила протокола и зеркала обычно задаются отдельно на уровне виртуального хоста.

Частые вопросы

Какой код выбрать — 301 или 308?
Для обычного переноса страниц обычно достаточно 301. Выбирайте 308, когда сервер обязан сохранить исходный HTTP-метод и тело запроса.
Зацепит ли правило для /old адрес /old-extra?
Нет. В nginx используются точные ключи, а в Apache — шаблоны RedirectMatch или RewriteRule с якорями начала и конца.
Что происходит с завершающим слэшем?
Одно правило сопоставляет обе формы старого пути: /old и /old/. Для корня создаётся только вариант /.
Можно ли учитывать query string?
Да. В точном режиме путь и параметры должны совпасть с картой, а исходный query отбрасывается после редиректа. В режиме игнорирования совпадение выполняется только по пути: исходные параметры сохраняются, если у цели нет своих; если есть — используются параметры цели. Когда у цели есть якорь, исходные параметры ставятся перед ним.
Почему генерация блокируется при цикле?
Цикл заставляет клиент переходить между адресами до ошибки. Такой набор правил нельзя безопасно применять.
Отправляется ли карта URL на сервер Pugofka?
Нет. Разбор, проверка, генерация, копирование и скачивание выполняются в браузере.

Нужна помощь с сайтом?

Поможем разобраться с технической задачей и оценить её решение.