我尝试在出现 404 错误时仅重定向来自特定目录前缀的静态文件请求。
我尝试过使用 try_files,它可能仍然有效,但对我来说到目前为止还没有效果。
场景如下;
请求针对https://example.com/forums/uploads/file.jpg 文件 404 重定向至https://cdn.example.com/file.jpg
我发现路径的改变很棘手。
我认为这是不可能的,但检查 CDN 上的非 404 也是很好的。
解决方案(基于接受的答案);
location ~* /forums/uploads {
try_files $uri @rewriteimages;
}
location @rewriteimages {
rewrite ^/forums/uploads(.*)$ https://cdn.example.com$1 redirect;
}
答案1
您想要检查本地文件是否存在,如果该文件不存在,则将客户端重定向到外部 URL。
您可以使用try_files
它来测试本地文件是否存在,并将rewrite
客户端重定向到外部 URL。
例如:
location /forums/uploads/
try_files $uri @rewrite;
}
location @rewrite {
rewrite ^/forums/uploads(.*)$ https://cdn.example.com$1 redirect;
}
看这个文件了解更多信息。
我认为这是不可能的,但检查 CDN 上的非 404 也是很好的。
重定向到 CDN 后,Nginx 不再参与解析 URL。