Regex nginx将uri重写为文件
我需要nginx通过uri打开文件,如: 来自/var/www/example.com/en\u US//u foo\u test\u bar 或 来自/var/www/example.com/en_US//u foo2\u test2\u bar 替换除要加下划线的字母/数字以外的所有符号。这个位置应该怎么看,可能最好是使用重定向Regex nginx将uri重写为文件,regex,redirect,nginx,url-rewriting,nginx-location,Regex,Redirect,Nginx,Url Rewriting,Nginx Location,我需要nginx通过uri打开文件,如: 来自/var/www/example.com/en\u US//u foo\u test\u bar 或 来自/var/www/example.com/en_US//u foo2\u test2\u bar 替换除要加下划线的字母/数字以外的所有符号。这个位置应该怎么看,可能最好是使用重定向 location /en/ { rewrite ... } 我不知道nginx和regexp中这种机制的最佳实践。谢谢。您可以使用重写递归更改符号,直到它们全部更
location /en/ {
rewrite ...
}
我不知道nginx和regexp中这种机制的最佳实践。谢谢。您可以使用
重写
递归更改符号,直到它们全部更改为止。假设实际文件位于en_US
下,如您的示例所示:
location /en/ {
rewrite ^/en/(.*)[^A-Za-z0-9_](.*)$ /en/$1_$2 last;
rewrite ^/en/(.*)$ /en_US/$1 last;
}
location /en_US/ {
root /path/to/real/files;
}
第一个重写
重复匹配,直到所有符号都被使用。第二个rewrite
准备URI以服务于实际文件
有关详细信息,请参阅。您可以使用
重写
递归更改符号,直到它们全部更改为止。假设实际文件位于en_US
下,如您的示例所示:
location /en/ {
rewrite ^/en/(.*)[^A-Za-z0-9_](.*)$ /en/$1_$2 last;
rewrite ^/en/(.*)$ /en_US/$1 last;
}
location /en_US/ {
root /path/to/real/files;
}
第一个重写
重复匹配,直到所有符号都被使用。第二个rewrite
准备URI以服务于实际文件
更多信息,请参阅