Как сделать редирект на внешние ссылки из директории в nginx?

На многих сайтах осталась традиция делать редирект через внутреннюю директорию. Выглядит это так, что внешняя ссылка на Яндекс с сайта site.ru выглядит так:

https://site.ru/out/https://ya.ru

Этот урл редиректит на https://ya.ru.

Раньше у меня был apache, через .htaccess делал инструкцию:

RedirectMatch 301 /out/(.*)$ $1

Пытаюсь переписать для nginx, делаю так:

rewrite /out/(.*) $1 permanent;

Но в итоге идёт редирект на https://site.ru/ya.ru.

Помогите с конфигом, не могу разобраться.(
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
@dodo512
В location и rewrite для сопоставления используется URI запроса в нормализованном виде, после декодирования текста, заданного в виде “%XX”, преобразования относительных элементов пути “.” и “..” в реальные и возможной замены двух и более подряд идущих слэшей на один.
Так что "//" заменит на "/" и /out/https://ya.ru превратится в /out/https:/ya.ru
В первоначальном виде запрос можно взять из $request_uri.
map $request_uri $url {
~^/out/(.*)      $1;
}

server {

    rewrite ^/out/ $url? permanent;


Вариант без применения map
rewrite ^/out/(https?:/)(.*) $1/$2 permanent;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SaveTime Москва
от 160 000 ₽
NO ONE Москва
от 150 000 до 180 000 ₽
LOFT Москва
от 80 000 до 120 000 ₽