Url rewriting 如何匹配此位置Nginx
所以我有这样一个位置:someplacecat.com 某个地方是动态的和不同的。 我想把它重写到someplace.ourdomain.com 所以我写了这个位置块: 位置~*cat.*{ 重写^$scheme://$1.ourdomain$2$request\u uri; }Url rewriting 如何匹配此位置Nginx,url-rewriting,nginx,Url Rewriting,Nginx,所以我有这样一个位置:someplacecat.com 某个地方是动态的和不同的。 我想把它重写到someplace.ourdomain.com 所以我写了这个位置块: 位置~*cat.*{ 重写^$scheme://$1.ourdomain$2$request\u uri; } 但我无法使其匹配,我在这里做错了什么?设法使用if块解决它,但如果有人知道我在位置块上做错了什么,请告诉我 if ($host ~* (.*)cat\.(.*)) { set $subdomain $1;
但我无法使其匹配,我在这里做错了什么?设法使用if块解决它,但如果有人知道我在位置块上做错了什么,请告诉我
if ($host ~* (.*)cat\.(.*)) {
set $subdomain $1;
set $tld $2;
rewrite ^ $scheme://$subdomain.ourdomain.$tld$request_uri;
}
设法解决它使用一个if块,但如果有人知道我的位置块做错了什么,请让我知道
if ($host ~* (.*)cat\.(.*)) {
set $subdomain $1;
set $tld $2;
rewrite ^ $scheme://$subdomain.ourdomain.$tld$request_uri;
}
位置块的问题
location ~ (.*)cat(.*) { rewrite ^ $scheme://$1.ourdomain$2$request_uri; }
是因为rewrite指令将反向引用重置为其第一个参数的反向引用,所以您需要在重写之前保存它们,如下所示:
location ~ (.*)cat(.*) {
set $subdomain $1;
set $tld $2;
rewrite ^ $scheme://$subdomain.ourdomain.$tld$request_uri;
}
这与您在下面的anwser中使用if块所做的差不多,否则它也会有相同的问题:位置块的问题
location ~ (.*)cat(.*) { rewrite ^ $scheme://$1.ourdomain$2$request_uri; }
是因为rewrite指令将反向引用重置为其第一个参数的反向引用,所以您需要在重写之前保存它们,如下所示:
location ~ (.*)cat(.*) {
set $subdomain $1;
set $tld $2;
rewrite ^ $scheme://$subdomain.ourdomain.$tld$request_uri;
}
这与您在下面anwser中使用if块时所做的差不多,否则它也会有相同的问题:Nice。。。Nginx if是专门为这类事情设计的。很好。。。Nginx if是专门为这类事情设计的,但它不起作用。似乎它从未进入位置块。上面我的位置块和下面解决它的if块中的regexp之间的regexp存在差异,这可能就是问题所在?我用~匹配区分大小写,而不是用~*匹配不区分大小写,而且我没有多余的\。在那之后,我担心它仍然不起作用。只是为了不捕捉最后一个组中tld之前的时间段,为了清楚起见。只是计算出来:位置匹配在$request\u uri上,该uri不包括$host,而下面的if块与$host匹配。因此,无法输入位置块。我打了我的头,我早就应该注意到这一点了:但它不起作用。似乎它从未进入位置块。上面我的位置块和下面解决它的if块中的regexp之间的regexp存在差异,这可能就是问题所在?我用~匹配区分大小写,而不是用~*匹配不区分大小写,而且我没有多余的\。在那之后,我担心它仍然不起作用。只是为了不捕捉最后一个组中tld之前的时间段,为了清楚起见。只是计算出来:位置匹配在$request\u uri上,该uri不包括$host,而下面的if块与$host匹配。因此,无法输入位置块。我打了我的头,早该注意到的:D