我正在尝试将访问我网站管理部分的任何人重定向到其 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 =