NGINX 重定向规则:子文件夹仅指向 HTTPS?

Pro*_*ink 5 rewrite ssl nginx redirect

我试图将访问我网站管理部分的任何人重定向到它的 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;
                }
}
Run Code Online (Sandbox Code Playgroud)

此规则的问题在于它仅转发http://domain.com/www/admin到 HTTPS -http://domain.com/www/admin/index.php例如,不会重定向。知道如何纠正这个问题以便以下任何内容/www/admin也被重定向吗?

kol*_*ack 5

阅读 AlexD 链接的维基条目中的四个规则。正则表达式位置(如您的 PHP 位置)优先于普通静态位置。为防止出现这种情况,您需要^~在静态位置使用该标志:

location ^~ /www/admin/ {
    rewrite ^ https://domain.com$request_uri? permanent;
}
Run Code Online (Sandbox Code Playgroud)

编辑:另外,你不应该在 location 设置你的根/。在服务器中设置它并让您的所有位置继承该设置。参见陷阱和常见错误1.2