我的网站上有很多图像/image/test/manyfile.jpg,现在我有/image/test/manyfile_large.jpg,但并非所有.jpg都有_large.jpg。
所以我的想法是使用Nginx检查manyfile_large.jpg文件,如果不存在则重写或重定向到manyfile.jpg
任何人都可以提供示例配置吗?
非常感谢! :)
答案 0 :(得分:0)
您可以使用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。