我的网站有很多图像/image/test/manyfile.jpg现在我有/image/test/manyfile_large.jpg,但并非所有.jpg都有_large.jpg。
所以我的想法是使用Nginx检查manyfile_large.jpg文件,如果不存在则重写或重定向到manyfile.jpg
任何人都可以提供示例配置吗?
非常感谢! :)
您可以使用try_files
来测试是否存在一个或多个文件。有关详细信息,请参阅this document。
首先,您需要捕获URI的组件,以便您可以构建两个文件名变体来尝试。
我不确定您的问题和评论中的示例是URI还是路径名。在以下示例中,URI为/image/foo/bar.jpg
,相应的文件位于/path/to/image/foo/bar.jpg
和(可选)/path/to/image/foo/bar_large.jpg
。
例如:
location ~ ^(/image/.+)\.(jpg|png|svg)$ {
root /path/to;
try_files $1_large.$2 $1.$2 =404;
}
该块将返回大变量(如果存在),然后返回常规变量(如果存在),如果两者都不存在则返回404状态。
正则表达式location
块的顺序很重要,因为具有匹配正则表达式的第一个块用于处理请求。有关详细信息,请参阅this document。