我的 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)$