Nginx实现计算目录的父目录

小说站的rewrite经常会遇到这样的一个问题,实际保存路径是

/file/article/html/1/1245/32343.html

这个时候想要rewrite成

/book/1245/32343.html


这样的路径时,在nginx里边不会实现,只能通过php来实现,但使用php实现会大量耗费服务器的资源。

这里教大家一个nginx规则来实现这样的伪静态

http {
    # ... 其他 http 配置 ...

    map $1 $subaid {
        ~^(\d+)\d{3}$   $1;
        default         0;
    }

    server {
        listen 80;
        server_name yourdomain.com;

        # ... 其他配置 ...

        location /cover/ {
            if ($request_uri ~* ^/cover/(\d+)\.jpg$) {
                rewrite ^/cover/(\d+)\.jpg$ /files/article/image/$subaid/$1/$1s.jpg last;
            }
        }

        # ... 其他配置 ...
    }

    # ... 其他 http 配置 ...
}

我这里使用的是Cover封面来做的示范,主要就是添加一个map做对应关系。相信通过这个示范你也学废了吧。

评论

发表回复