32

次のnginx構成フラグメントがあります:

server {
   listen 80;

   server_name mydomain.io;

   root /srv/www/domains/mydomain.io;

   index index.html index.php;

   access_log /var/log/nginx/domains/mydomain.io/access.log;
   error_log /var/log/nginx/domains/mydomain.io/error.log;

   location ~\.php {
      try_files $uri =404;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      fastcgi_intercept_errors on;
      fastcgi_pass 127.0.0.1:9000;
      include /etc/nginx/fastcgi_params;
   }
}

both まず、サーバー ブロックをhttp://www.mydomain.iohttp://mydomain.ioに応答させるにはどうすればよいですか。第二に、 http://www.mydomain.ioから来ている場合は強制的にhttp://mydomain.ioにリダイレクトしたいと考えています。

ありがとう。

4

6 に答える 6

13

ブロックによる不必要なチェックを避けるために、2 つの別個のサーバー ブロックを追加する方がよいと思いますif。また、$scheme 変数を使用して、HTTPS リクエストが安全でない相手にリダイレクトされないようにします。

server {
    listen 80;

    server_name www.mydomain.io;

    rewrite ^ $scheme://mydomain.io$uri permanent;
}

server {
    listen 80;

    server_name mydomain.io;

    # your normal server block definitions here
}
于 2012-12-20T10:11:40.393 に答える
5

それをコーディングする別の方法:

if ($http_host ~* "^www\.(.+)$"){
    rewrite ^(.*)$ http://%1$request_uri redirect;
}

同じコードに複数のドメイン名があっても機能します。

于 2014-07-08T18:34:49.457 に答える
-21

最初の質問では、両方のドメインを追加するだけです:

server_name mydomain.io www.mydomain.io;

2 つ目は、次の単純なリダイレクトが必要です。

server {
      listen 80;

      server_name www.mydomain.io mydomain.io;

      if ($host = 'www.mydomain.io' ) {
         rewrite  ^/(.*)$  http://mydomain.io/$1  permanent;
      }
于 2012-07-04T08:08:44.960 に答える