Pugofka / Tools / Генераторы
Генератор правил редиректов для nginx и Apache
Создайте точные правила 301 или 308 из карты старых и новых URL. Дубли, конфликты, циклы и цепочки проверяются в браузере.
Чем отличаются 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?
- Нет. Разбор, проверка, генерация, копирование и скачивание выполняются в браузере.
Нужна помощь с сайтом?
Поможем разобраться с технической задачей и оценить её решение.