site.com/%40user
на site.com/@user
rewrite ^/%40(.*)$ /@$1 permanent;
, но редиректа нет. Мне кажется это из за знака %, его нужно как-то экранировать, потому что когда я его убираю и оставляю просто 40 rewrite ^/40(.*)$ /@$1 permanent;
, то редирект срабатывает для site.com/40user
location
и rewrite
для сопоставления используют URI запроса в нормализованном виде, т.е. уже после декодирования текста, заданного в виде %XX
.$request_uri
. Там он будет целиком (с аргументами).if ($request_uri ~ "^/%40(.*)$") {
return 301 /@$1;
}