Я смотрел на многих SE темы и сделал различные поиск в гугле и не могу понять, почему я не могу перенаправить www.mysite.com
к mysite.com
на моем сервере nginx.
1-й серверный блок выполняет 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.
}
Есть мысли о том, что не так?
Вы перенаправляетесь на $server_name
, который www.mysite.info
во-вторых server
block - поэтому все, что делает, это перенаправляет на HTTPS, а не меняет хост.
rewrite ^ https://mysite.info$request_uri? permanent;
Это обработает изменение хоста, а также переход на HTTPS.
Если вы хотите, чтобы перенаправление было независимым от протокола, лучшим подходом было бы:
rewrite ^ $scheme://mysite.info$request_uri? permanent;
В последних версиях nginx это тоже работает (и должно быть немного быстрее):
return 301 $scheme://mysite.info$request_uri;