Nginxを使用して、example.com
のすべてのサブドメインをwww.example.com
にリダイレクトしたいと思います。
Www以外をwwwに、またはその逆にリダイレクトするためのリダイレクトをここで見ましたが、www2.site.com blabla.site.com
もリダイレクトしたいと思います。ドメインのワイルドカードDNSがあります。
Apacheの場合、これは次の方法で簡単に実行できます。
RewriteCond %{HTTP_Host} !www.example.com [NC]
RewriteRule (.*) http://www.example.com%{REQUEST_URI} [R=301,L]
以下は機能しているようですが、 ifisevil page によるとお勧めできません。
if ($http_Host !~ "www.site.com"){
rewrite ^(.*)$ http://www.example.com$request_uri redirect;
}
Nginxでこれを行う最良の方法は、2つのサーバーブロックを組み合わせることです。
server {
server_name *.example.org;
return 301 $scheme://example.org$request_uri;
}
server {
server_name www.example.org;
#add in further directives to serve your content
}
あなたがそれが機能していないと報告したので、私は私のラップトップでこれをテストしました。ローカルで次の結果が得られます(www2.test.localhost
とwww.test.localhost
をnginxconfigビットと一緒に/etc/hosts
に追加し、nginxをリロードした後):
$ curl --head www2.test.localhost
HTTP/1.1 301 Moved Permanently
Server: nginx/1.2.6
Date: Thu, 07 Mar 2013 12:29:32 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: http://www.test.localhost/
そうです、これは間違いなく機能します。
server {
server_name .example.com;
return 301 http://www.example.com$request_uri;
}
server {
server_name www.example.com;
[...]
}
参照: