如何编写一个正则表达式来匹配带有保留字符(如 '+','-' )的路径节点?例如:
https://e.example.com/foo+/bar/file/test.txt
需要重写为https://e.example.com/bar/file/test.txt
我试过rewrite ^/foo+(/.*)$ break;
但无法匹配字符串。
有什么建议么?
答案1
Innginx
rewrite
指令使用规范化的 URI 进行匹配。规范化的 URI 不包括查询参数或索引搜索参数。
您也许可以map
在这里使用:
map $request_uri $filefromarg {
^[^+]*\+(.*)$ $1;
default $request_uri;
}
并且在server
块中你将拥有:
try_files $filefromarg $uri =404;
takes包含资源和查询参数的完整路径。第一行正则表达式捕获符号后的所有内容map
并将其设置为变量。$request_uri
+
$filefromarg
然后,在try_files
用作路径的部分中检查要提供的资源。