Я посмотрел на многихТемы SEи сделал разныеПоиск в Googleи не могу понять, почему я не могу перенаправить 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;