隐藏 nginx 中的路径节点

隐藏 nginx 中的路径节点

我有以下网址:

http://example.com/dr/2015/10/pic.jpg

其中 2015/10/pic.jpg 是动态的:2015 是年份,10 是月份数,pic.jpg 是文件名。每次发送图像时,都会创建年份和月份文件夹作为当前日期。

我想删除 url 的节点“dr”,如下例所示:

http://example.com/2015/10/pic.jpg

我发现了这个问题,它最接近我需要的:https://superuser.com/questions/435916/nginx-rewrite-rule-to-remove-path-node

答案1

试试这个。此规则将内部将 /2015/10/pic.jpg 重定向到 /dr/2015/10/pic.jpg,但 URL 将为 /2015/10/pic.jpg

rewrite ^/(.*)/(.*)/pic.jpg dr/$1/$2/pic.jpg last;

答案2

你可以直接把它添加到你的try_files。这是最简单的,而且性能比 更好rewrite。例如:

try_files /dr$uri $uri ....the rest of it...

答案3

在以前的答案的帮助下,我得出了以下结果:

location ~ /dr {
      #empty
}

location / {
      rewrite ^/(.*)/(.*)/(.*) /dr/$1/$2/$3 last;
}

它能很好地满足我的需要。

相关内容