我正在使用server
和玩弄 nginx 重写规则server_name
。关于优先顺序,文档听起来很简单和清楚,但我得到了一些有点奇怪的行为,并想检查我是否遗漏了任何东西。
我正在尝试将除www.domain.com
(例如www.domain.net
,www.domain.info
)以外的任何内容重定向到www.domain.com
. 除了www.domain.de
重定向到www.domain.com/de
.
我有以下规则:
server {
server_name domain.de www.domain.de;
rewrite ^(.*) http://www.domain.com/de$1 permanent;
}
server {
server_name _;
rewrite ^(.*) http://www.domain.com$1 permanent;
}
server {
listen 80;
server_name localhost domain.com www.domain.com;
...
}
但是,似乎使用此规则集,它将始终将所有非.com
域重定向到www.domain.com/de
. 而如果我翻转前两个server
部分,它工作正常。
难道我做错了什么?如果明确指定服务器名称,为什么规则的顺序很重要?