nginx,重定向删除文件名的一部分

时间:2015-10-26 04:10:04

标签: regex redirect nginx

我在解决方案中看到了几个类似的问题,但它们对我没有用。主要是因为在所有这些中,要删除的部分位于URL的开头,但在我的情况下,它位于中间。 我需要将http://123.123.123.123:9090/v0/A8B9DEBF512F929144257AEE00262C16/ $ File / IMG_8819.jpg等网址转换为http://123.123.123.123:9090/v0/A8B9DEBF512F929144257AEE00262C16/IMG_8819.jpg(不使用$ File /,而不是A8B9DEBF512F929144257AEE00262C16和IMG_8819.jpg可能有数字和字母的任意组合)?

我试过这样的事情

location /v0 {
    rewrite ^(v0/[^/]+)/\$File/(.*)$ $1/$2 last;
}

无济于事。但显然它的正则表达式是错误的,因为至少nginx认识到它应该用/ v0 /做一些事情而且我得到404.

1 个答案:

答案 0 :(得分:1)

基本上你想要“删除”/$File。通过捕获前后的所有内容,然后将其放回来做到这一点:

location /v0 {
    rewrite ^(.*)/\$File(.*)$ $1$2 last;
}