Nginx - 重定向过多

Nginx - 重定向过多

我正在使用 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 结尾的请求。这排除子目录中的请求。

另外,还没有测试过正则表达式,但是应该工作。

相关内容