Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex nginx将uri重写为文件_Regex_Redirect_Nginx_Url Rewriting_Nginx Location - Fatal编程技术网

Regex nginx将uri重写为文件

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中这种机制的最佳实践。谢谢。您可以使用重写递归更改符号,直到它们全部更

我需要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中这种机制的最佳实践。谢谢。

您可以使用
重写
递归更改符号,直到它们全部更改为止。假设实际文件位于
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以服务于实际文件

更多信息,请参阅