Nginx在location指令中匹配多个path

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

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

我会合并这些expression式在一个指令,但我不知道如何正确构build正则expression式。 我尝试了以下,但它只适用于favicon.ico,我得到404请求/apple-touch-icon-precomposed.png

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

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

您的正则expression式在我的服务器上正常工作。 也许文件/home/www/myapp/static/ico/apple-touch-icon-precomposed.png不存在?

PS你的旧规则到正则expression式的确切翻译是:

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

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

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