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