如果主站点 URL 使用 SSL,您可以排除所有其他子域的加密吗?
server {
listen 80;
listen [::]:80;
server_name .example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
## ssl stuff
server_name www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl default_server http2;
listen [::]:443 ssl http2;
server_name example.com;
root /home/forge/example.com/public;
index index.html index.htm index.php;
charset utf-8;
}
答案1
定义一个更具体的服务器,它将代替您现有的服务器。
server {
listen 80;
server_name subdomain1.example.com; # add others if you like
root /home/forge/example.com/public/subdomain; # check this
index index.html index.htm index.php;
}
正如 ceejay 在评论中指出的那样,您所包含的配置中没有包含重定向,因此发生了其他事情。
总结一下,更具体的 `server_name` 会得到服务,因此不会进行 `301` 重定向。摘自 [此处][1]。
- 确切名称
- 以星号开头的最长通配符名称,例如“*.example.org”
- 以星号结尾的最长通配符名称,例如“mail.*”
- 第一个匹配的正则表达式(按配置文件中出现的顺序)