サイトの管理セクションにアクセスするすべてのユーザーを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
より下のものもリダイレクトされるようにこれを修正する方法はありますか?
AlexDによってリンクされたwikiエントリーの4つのルールを読んでください。正規表現の場所(PHPの場所など)は、単純な静的な場所よりも優先されます。これを防ぐには、静的な場所で^~
フラグを使用します。
location ^~ /www/admin/ {
rewrite ^ https://domain.com$request_uri? permanent;
}
編集:また、/
にルートを設定しないでください。サーバーに設定し、すべての場所に設定を継承させます。 落とし穴とよくある間違い 1.2を参照してください
locationディレクティブ の説明については、nginxのドキュメントを確認してください。代わりにlocation
を使用する必要がありますlocation =