Nginx 按照自增 ID 的千位分目录后,如何通过 rewrite 改写成无千位目录的访问路径?

问题描述

Nginx 按照自增 ID 的千位分目录后,如何通过 rewrite 改写成无千位目录的访问路径?

目录结构

/image/
    Floor(id/1000)/
        id.jpg
        
/image/
    0/
        1.jpg
        234.jpg
    123/
        123000.jpg
        123456.jpg
        123999.jpg

目标

http://a.com/image/234.jpg 访问到 /image/0/234.jpg
http://a.com/image/123456.jpg 访问到 /image/123/123456.jpg

阅读 1.5k
1 个回答

解决

server {
    listen       80;
    location /image/ {
        alias        /image/;
        rewrite      "^/image/(\d{1,3})\.jpg$" /image/0/$1.jpg last;
        rewrite      "^/image/(\d{1,})(\d{3})\.jpg$" /image/$1/$1$2.jpg last;
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题