server { }
我有这个配置在空定义中按预期工作
location ^~ /foo/ {
alias /var/www/foo/;
}
但是,当我将它移到一个更大的服务器定义中(用于 WordPress 多站点配置)时,它会停止工作并且 wordpress 会响应它(这显然不是我的意图)。
我试图放在服务器块的开头或结尾,但这并没有改变它。
如何强制 Nginx 使用此位置?
server { }
我有这个配置在空定义中按预期工作
location ^~ /foo/ {
alias /var/www/foo/;
}
但是,当我将它移到一个更大的服务器定义中(用于 WordPress 多站点配置)时,它会停止工作并且 wordpress 会响应它(这显然不是我的意图)。
我试图放在服务器块的开头或结尾,但这并没有改变它。
如何强制 Nginx 使用此位置?
您可能正在寻找break
.
location ^~ /foo/ {
alias /var/www/foo/;
break;
}
last
- 完成当前重写指令的处理并重新启动该过程(包括重写),并从所有可用位置搜索 URI 上的匹配项。
break
- 完成当前重写指令的处理,非重写处理仅在当前位置块内继续。请注意,外部位置块,last 和 break 实际上是相同的。
Nginx 中的位置块是独占的。如果您使用location ^~
其他规则,则静态对象的到期标头可能不适用,除非您将这些规则复制为嵌套在同一位置块下。
如果你可以分享你的完整配置,那么我可以让它为你工作。您很可能需要使用嵌套的位置块。
location = /aliasname/ {
alias /path/to/alias/
}
如果 URI 中不存在尾随斜杠,则会出现问题。请参阅https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms#matching-location-blocks