如果 404,nginx 将重定向静态文件请求

如果 404,nginx 将重定向静态文件请求

我尝试在出现 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。

相关内容