我正在使用 cdn 子域名。文件现在可在 cdn.website.com/uploads/*.(img|png|zip|..) 上获取。
旧的 URL 结构是 cdn.website.com/*.(img|png|zip|..)。
该代码运行良好;
location ~* ^/.+\.(png|jpg|doc|gif|html|jpeg|zip|rar)$ {
rewrite ^/(.*) http://cdn.website.com/uploads/$1 permanent;
}
从主目录到“uploads”目录的路由工作正常。但是当我打开 uploads 数组上的文件时,它会复制“uploads”目录。示例;
cdn.website.com/uploads/x1.jpg
cdn.website.com/uploads/uploads/x1.jpg
cdn.website.com/uploads/uploads//uploads/x1.jpg
...
许多重定向问题。
如何解决这个问题?谢谢你的帮助。
答案1
位置模式需要缩小。
location ~* ^/[a-zA-Z0-9_-]+\.(png|jpg|doc|gif|html|jpeg|zip|rar)$ {
rewrite ^/(.*) http://cdn.website.com/uploads/$1 permanent;
}
匹配以 / 开头且包含以下任意字符 az、AZ、0-9、_ 或 - 并以 .png、.jpg、.doc、.gif、.html、.jpeg、.zip 和 .rar 结尾的请求。这排除子目录中的请求。
另外,还没有测试过正则表达式,但是应该工作。