所以我有这样的位置:someplacecat.com
someplace
动态且不同的地方。
我想将其重写为someplace.ourdomain.com
所以我写了这个位置块:
location ~ (.*)cat(.*) {
rewrite ^ $scheme://$1.ourdomain$2$request_uri;
}
但是我无法匹配,我在这里做错了什么?
答案 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;
}