Nginx重写部分url
我有以下网址: 并希望将其改写为: 介于(10103)之间的数字可以更改,图像名称也可以更改。我尝试了以下nginx重写规则:Nginx重写部分url,nginx,url-rewrite-module,Nginx,Url Rewrite Module,我有以下网址: 并希望将其改写为: 介于(10103)之间的数字可以更改,图像名称也可以更改。我尝试了以下nginx重写规则: rewrite ^/img/products/(.+)$/f /img/products/$1 last; 为什么现在可以工作?当前的重写规则正在匹配 ^/img/products/(.+)$/f 这意味着URL路径以/img/products/开始,然后是任何内容,URL结束,然后是/f。这永远不会匹配一行,因为您使用的是美元符号,表示行的结尾,然后在后面有字
rewrite ^/img/products/(.+)$/f /img/products/$1 last;
为什么现在可以工作?当前的重写规则正在匹配
^/img/products/(.+)$/f
这意味着URL路径以/img/products/
开始,然后是任何内容,URL结束,然后是/f
。这永远不会匹配一行,因为您使用的是美元符号,表示行的结尾,然后在后面有字符
如果你想匹配
/img/products/10103/f/10103-s-1.jpg
您必须将其更改为
^/img/products/(.+)$
,但由于要提取您正在查找的两个id组,因此必须将其替换为^/img/products/(.+)/f/(.+)$
,然后将其替换为/img/products/$1/$2
。正如您在评论中所发布的。我不熟悉nginx,但对我来说它看起来像一个正则表达式,$
表示行尾,当您从find表达式中删除$
符号时会发生什么?我相信您是对的。另外,我相信在重写之后,最后一点被切断了。我现在把它改成这样,它可以工作了:最后重写^/img/products/(.*)/f/(.*)$/img/products/$1/$2;