1

所以我有这样的位置:someplacecat.com 哪里someplace是动态的,哪里是不同的。我想将其重写为someplace.ourdomain.com

所以我写了这个位置块:

location ~ (.*)cat(.*) { rewrite ^ $scheme://$1.ourdomain$2$request_uri; }

但是我无法匹配,我在这里做错了什么?

4

2 回答 2

4

您的位置块问题

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 所做的(否则它会遇到同样的问题 :)

于 2012-08-21T17:29:53.080 回答
0

设法使用 if 块解决它,但如果有人知道我在 location 块上做错了什么,请告诉我。

if ($host ~* (.*)cat\.(.*)) {
    set $subdomain $1;
    set $tld $2;
    rewrite ^ $scheme://$subdomain.ourdomain.$tld$request_uri;
}
于 2012-08-21T12:14:52.437 回答