web-dev-qa-db-ja.com

NGINXリダイレクトルール:サブフォルダーはHTTPSのみですか?

サイトの管理セクションにアクセスするすべてのユーザーをHTTPSバージョンにリダイレクトしようとしています。現在の書き換えルールは次のとおりです。

server {
        listen          80;
        server_name     domain.com;

        location / {
                index index.php index.html;
                root  /home/domain.com/public;
                }

        #Redirect Admin requests to secure server
        location /www/admin/  {
                rewrite ^/(.*) https://domain.com$1 permanent;
                }
}

このルールの問題は、http://domain.com/www/adminをHTTPSに転送するだけであるということです。たとえば、http://domain.com/www/admin/index.phpに移動してもリダイレクトされません。 /www/adminより下のものもリダイレクトされるようにこれを修正する方法はありますか?

5
Professor Frink

AlexDによってリンクされたwikiエントリーの4つのルールを読んでください。正規表現の場所(PHPの場所など)は、単純な静的な場所よりも優先されます。これを防ぐには、静的な場所で^~フラグを使用します。

location ^~ /www/admin/ {
    rewrite ^ https://domain.com$request_uri? permanent;
}

編集:また、/にルートを設定しないでください。サーバーに設定し、すべての場所に設定を継承させます。 落とし穴とよくある間違い 1.2を参照してください

5
kolbyjack

locationディレクティブ の説明については、nginxのドキュメントを確認してください。代わりにlocationを使用する必要がありますlocation =

2
AlexD