Nginx HttpRewriteModuleのドキュメントには、wwwプレフィックスが付いたドメインをwwwプレフィックスが付いていないドメインに書き換える例があります。
if ($host ~* www\.(.*)) {
set $host_without_www $1;
rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1 contains '/foo', not 'www.mydomain.com/foo'
}
どうすれば逆のことができますか?wwwプレフィックスのないドメインをwwwプレフィックスのドメインに書き換えますか?次のようなことができるかもしれないと思いましたが、Nginxはネストされたifステートメントが好きではありません。
if ($host !~* ^www\.) { # check if host doesn't start with www.
if ($host ~* ([a-z0-9]+\.[a-z0-9]+)) { # check host is of the form xxx.xxx (i.e. no subdomain)
set $host_with_www www.$1;
rewrite ^(.*)$ http://$host_with_www$1 permanent;
}
}
また、書き換えるドメインが多数あるため、Nginxにdomain1.com-> www.domain1.com、domain2.com-> www.domain2.comなどを書き換えるように明示的に指示せずに、これを任意のドメイン名で機能させたいと考えました。 。