Nginx 在位置指令中匹配多个路径

Nginx 在位置指令中匹配多个路径

我的 nginx conf 中有以下指令,它们工作正常:

location = /favicon.ico {
    root /home/www/myapp/static/ico;
}


location ^~ /apple-touch-icon  {
    root /home/www/myapp/static/ico;
}

我想将这些表达式合并到一个指令中,但我不知道如何正确构建正则表达式。我尝试了以下方法,但它只适用于 favicon.ico,并且我请求 /apple-touch-icon-precomposed.png 时出现 404

location ~* ^/(apple-touch-icon(.)*\.png|favicon.ico) {
    root /home/www/myapp/static/ico;
}

我认为这是一个匹配的问题。

答案1

您的正则表达式在我的服务器上运行良好。也许文件/home/www/myapp/static/ico/apple-touch-icon-precomposed.png不存在?

PS 将旧规则准确翻译为正则表达式如下:

^/(apple-touch-icon|favicon.ico$)

PPS 如果顶层没有其他.png图像,则可以使用:.ico

^/[^/]+\.(png|ico)$

相关内容