回答:
domain.comの前の余分な期間の意味は何ですか?URLからwwwを削除することが目的ですか?もしそうなら、これはトリックをする必要があります:
if ($host ~* www\.(.*)) {
set $host_without_www $1;
rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1 contains '/foo', not 'www.mydomain.com/foo'
}
sudo /etc/init.d/nginx restart
それをロードすることを忘れないでください
出典:NGINX Wiki
それはかなりハックです。
パフォーマンスの賢い最速の方法は
server {
server_name www.domain.com;
rewrite ^ http://domain.com$request_uri permanent;
}
正規表現の一致と2つのキャプチャを保存すると、ハッシュテーブルを使用して一致するサーバーブロックを検索するnginxの利点が得られます。
また、nginxを再起動する必要はありません-必要なのはリロードだけで、必要以上のダウンタイムを必要とする人はいますか?
正規表現のサーバー名を使用できます(http://nginx.org/en/docs/http/server_names.html#regex_namesを参照):
server {
listen 80;
listen 443;
server_name ~^www\.(\w+)\.domain\.com$
location / {
rewrite ^ $scheme://$1.domain.com$request_uri permanent;
}
}
数百のドメインを取得するまで、Martin Fのソリューションはすべてうまく機能しています。ただし、私は逆の方向に進むことをお勧めします。www.joe.domain.comでアプリを提供し、joe.domain.comからリダイレクトします。RFCに含まれていることを確認してください。