我看过很多SE 线程并做了各种谷歌搜索并且无法弄清楚为什么我无法重定向www.mysite.com
到mysite.com
我的 nginx 服务器。
第一个服务器块按预期执行了http://mysite.info
->https://mysite.info
重定向。因此我不确定为什么第二个服务器块没有对www.mysite.info
->执行相同的操作mysite.info
。
这是我的 nginx.conf 文件的相关部分:
server {
server_name mysite.info;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
server_name www.mysite.info;
rewrite ^ https://mysite.info$request_uri? permanent;
}
server {
listen 443;
ssl on;
server_name mysite.info;
# other directives, handling PHP, etc.
}
你知道到底出了什么问题吗?
答案1
您正在重定向到$server_name
,它位于www.mysite.info
第二个server
块中 - 因此所做的只是重定向到 HTTPS,而不是更改主机。
rewrite ^ https://mysite.info$request_uri? permanent;
这将处理主机的变化以及 HTTPS 的变化。
如果您希望重定向与协议无关,那么更好的方法是:
rewrite ^ $scheme://mysite.info$request_uri? permanent;
在较新版本的 nginx 上,这也有效(并且应该更快一些):
return 301 $scheme://mysite.info$request_uri;