如何匹配这个位置Nginx

时间:2012-08-21 11:59:07

标签: url-rewriting nginx

所以我有这样的位置:someplacecat.com someplace动态且不同的地方。 我想将其重写为someplace.ourdomain.com

所以我写了这个位置块:

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

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

2 个答案:

答案 0 :(得分: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所做的一样(否则会有同样的问题:)

答案 1 :(得分:0)

管理使用if块解决它,但如果有人知道我在使用位置块做错了什么,请告诉我。

if ($host ~* (.*)cat\.(.*)) {
    set $subdomain $1;
    set $tld $2;
    rewrite ^ $scheme://$subdomain.ourdomain.$tld$request_uri;
}