たとえば、次にsub1.example.com
リダイレクトしながらサブドメインをURLの末尾に追加している間、ワイルドカードサブドメインを新しいURLにリダイレクトしたいとします。www.newdomain.example/categories/sub1
server {
server_name ~^(.*)\.example\.com$ ;
return 301 $scheme://newdomain.example/categories/;
}
?
Nginxは最後にブロックされないので、基本的にこれを追加すると思います。
答え1
または、次のような場合は悪を使用しないでください。
server {
server_name ~^(.*)\.example\.com$;
return 301 $scheme://www.newdomain.example/categories/$1$request_uri;
}
$ request_uriには既にクエリ文字列/パラメータが含まれています。次を参照してください。http://nginx.org/en/docs/http/ngx_http_core_module.html
$request_uriを使用したくない場合は、$ is_args $argsペアについても言及したいと思います。
location = /from {
return 301 /to$is_args$args;
}
答え2
server_name
例を見る公式文書:
server {
server_name ~^(.*)\.example\.com$;
if ($query_string) {
return 301 $scheme://newdomain.example/categories/$1?$query_string;
}
return 301 $scheme://newdomain.example/categories/$1;
}
sub1.example.com は www.newdomain.example/categories/sub1 にリダイレクトされます。
www.newdomain.example
それともexample.com
どちらが正しいですか?
答え3
http://cat.example.com/post/1?comments=true
にリダイレクトするには、http://example.com/categories/cat/post/1?comments=true
次の設定を使用できます。
server {
server_name ~^(.*)\.(example\.com)$;
return 301 $scheme://$2/categories/$1$request_uri;
}
キャプチャグループで正規表現を使用します。server_name
重複を避けるため。デフォルトでは、クエリ文字列は例では保持されませんが、提案された設定では次のように保持されます。$request_uri
:
$request_uri
full original request URI (with arguments)