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

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也能被重定向?

答案1

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

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

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

答案2

查看 nginx 文档以了解位置指令. 你应该location使用location =

相关内容