У URL есть части с разными задачами
https://example.com/docs/start?tag=a&tag=b#install- /docs/start
- Путь к ресурсу
- ?tag=a&tag=b
- Параметры запроса
- #install
- Фрагмент в браузере
Перенаправление может заменить только хост, весь путь или адрес целиком. Правило нужно выбрать явно: универсального «правильного» поведения для всех переездов нет.
Сохранить путь: когда структура та же
https://old.example.com/docs/start?lang=ruhttps://new.example.org/docs/start?lang=ruМеняется только хост. Путь /docs/start и параметр lang=ru остаются.
Такое правило удобно при смене домена без перестройки сайта. Перед переносом убедитесь, что целевые пути существуют: сохранение адреса не создаёт недостающую страницу.
Заменить путь: когда структура изменилась
Старая страница /blog/setup может стать /guides/first-steps. Для неё нужно явное соответствие. Для короткой рекламной ссылки /summer назначением может быть вообще один фиксированный URL кампании.
Если разные старые страницы должны вести в разные места, подготовьте таблицу соответствий. Перенаправление всех путей на главную удобно для правила, но часто неудобно посетителю.
Сохранить или убрать параметры
UTM и другие параметры можно переносить, если они нужны принимающей странице. Например, ?tag=a&tag=b&utm_source=letter содержит два значения tag: нельзя случайно превратить их в одно или поменять смысл.
Параметры старого приложения, одноразовые токены или ненужные метки иногда стоит исключить. Это осознанное правило, а не побочный эффект смены домена. Если целевой URL уже содержит query, заранее определите приоритет, объединение и обработку одинаковых имён.
Пробелы и закодированные символы
Пробел в пути может быть записан как %20: /files/annual%20report.pdf. Кириллица также передаётся в URL в кодированной форме. Готовое кодирование не следует кодировать ещё раз: %20 и %2520 означают разные последовательности.
Особенно внимательно проверяйте %2F: закодированный слеш может быть частью данных сегмента. Превращение его в обычный / меняет структуру пути. В query знак + тоже может интерпретироваться приложением как пробел; перенос без пересборки помогает не изменить исходный смысл.
Проверяйте обычные пути, кириллицу, пробелы, повторяющиеся параметры и пустые значения на фактическом получателе. Сам редирект не определяет, как приложение назначения их обработает.
Часть после # сервер не получает
Фрагмент #install используется браузером и не входит в HTTP-запрос к серверу перенаправлений. Сервер не может выбрать правило по невидимому ему фрагменту.
При перенаправлении браузер обычно наследует исходный фрагмент, если новый адрес не задаёт другой. Но элемент с таким идентификатором должен существовать на целевой странице; сохранённый # сам по себе не гарантирует прокрутку к нужному разделу.
Перейти к настройке
Примените эти принципы на своей платформе: