@AnjeyTsibylskij

Как сделать Nginx редирект?

Как сделать Nginx редирект с site.com/%40user на site.com/@user

Пишу следующие условие rewrite ^/%40(.*)$ /@$1 permanent;, но редиректа нет. Мне кажется это из за знака %, его нужно как-то экранировать, потому что когда я его убираю и оставляю просто 40 rewrite ^/40(.*)$ /@$1 permanent;, то редирект срабатывает для site.com/40user

Пытался искать как экранировать %, но толкового ничего нет. Может не в ту сторону копаю?
  • Вопрос задан
  • 252 просмотра
Решения вопроса 1
@dodo512
location и rewrite для сопоставления используют URI запроса в нормализованном виде, т.е. уже после декодирования текста, заданного в виде %XX.
В первоначальном виде запрос можно найти в $request_uri. Там он будет целиком (с аргументами).

if ($request_uri ~ "^/%40(.*)$") {
    return 301 /@$1;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Копайте в сторону Urlencode, имхо.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы