所以我有这样的位置:someplacecat.com
哪里someplace
是动态的,哪里是不同的。我想将其重写为someplace.ourdomain.com
所以我写了这个位置块:
location ~ (.*)cat(.*) {
rewrite ^ $scheme://$1.ourdomain$2$request_uri;
}
但是我无法匹配,我在这里做错了什么?
所以我有这样的位置:someplacecat.com
哪里someplace
是动态的,哪里是不同的。我想将其重写为someplace.ourdomain.com
所以我写了这个位置块:
location ~ (.*)cat(.*) {
rewrite ^ $scheme://$1.ourdomain$2$request_uri;
}
但是我无法匹配,我在这里做错了什么?
您的位置块问题
location ~ (.*)cat(.*) { rewrite ^ $scheme://$1.ourdomain$2$request_uri; }
是重写指令将反向引用重置为其第一个参数的反向引用,因此您需要在重写之前保存它们,如下所示:
location ~ (.*)cat(.*) {
set $subdomain $1;
set $tld $2;
rewrite ^ $scheme://$subdomain.ourdomain.$tld$request_uri;
}
这几乎就是您在下面的 anwser 中使用 if-block 所做的(否则它会遇到同样的问题 :)
设法使用 if 块解决它,但如果有人知道我在 location 块上做错了什么,请告诉我。
if ($host ~* (.*)cat\.(.*)) {
set $subdomain $1;
set $tld $2;
rewrite ^ $scheme://$subdomain.ourdomain.$tld$request_uri;
}