http://test.com すべての要求を http://www.test.com にリダイレクトする必要があります。どうすればこれができますか。
サーバーブロックに追加してみた
rewrite ^/(.*) http://www.test.com/$1 permanent;
しかしブラウザでそれは言う
The page isn't redirecting properly
Firefox has detected that the server is redirecting the request for
this address in a way that will never complete.
私のサーバーブロックはこんな感じです
server {
listen 80;
server_name test.com;
client_max_body_size 10M;
client_body_buffer_size 128k;
root /home/test/test/public;
passenger_enabled on;
Rails_env production;
#rewrite ^/(.*) http://www.test.com/$1 permanent;
#rewrite ^(.*)$ $scheme://www.test.com$1;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
あなたが望むことをする最善の方法は別のサーバーブロックを追加することです:
server {
#implemented by default, change if you need different ip or port
#listen *:80 | *:8000;
server_name test.com;
return 301 $scheme://www.test.com$request_uri;
}
次のようにメインサーバーブロックserver_name変数を編集します。
server_name www.test.com;
重要:これを行うには新しいserver
ブロックが正しい方法です。 if
は悪い 。可能であれば、if
の代わりに場所とサーバーを使用する必要があります。 Rewrite
は時々 悪 なので、それをreturn
に置き換えます。
ここで別の答えに似ていますが、書き換えでhttpを$ schemeに変更します。
server {
listen 80;
server_name test.com;
rewrite ^ $scheme://www.test.com$request_uri? permanent;
}
次のようにメインサーバーブロックserver_name変数を編集します。
server_name www.test.com;
私はwww.test.comをtest.comにリダイレクトするためにこれをしなければなりませんでした。
まず、HTTP書き換えモジュールを使ってNginxをインストールしたことを確認してください。これをインストールするには、pcre-libraryが必要です。
上記のことが行われた場合、またはすでにそれらがある場合は、nginxサーバーブロックに以下のコードを追加してください
if ($Host !~* ^www\.) {
rewrite ^(.*)$ http://www.$Host$1 permanent;
}
あなたが使用できるすべてのリクエストからwwwを削除するには
if ($Host = 'www.your_domain.com' ) {
rewrite ^/(.*)$ http://your_domain.com/$1 permanent;
}
だからあなたのサーバーブロックのようになります
server {
listen 80;
server_name test.com;
if ($Host !~* ^www\.) {
rewrite ^(.*)$ http://www.$Host$1 permanent;
}
client_max_body_size 10M;
client_body_buffer_size 128k;
root /home/test/test/public;
passenger_enabled on;
Rails_env production;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}