he mirado muchoshilos SEy hecho variosbúsquedas en googley no puedo entender por qué no puedo redirigir www.mysite.com
a mysite.com
mi servidor nginx.
El primer bloque del servidor realiza el http://mysite.info
-> https://mysite.info
redireccionamiento como era de esperar. Así que no estoy seguro de por qué el segundo bloque del servidor no hace lo mismo para www.mysite.info
-> mysite.info
.
Aquí está la parte relevante de mi archivo 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.
}
¿Alguna idea sobre lo que está yendo mal?
Respuesta1
Estás redirigiendo a $server_name
, que está www.mysite.info
en el segundo server
bloque, por lo que todo lo que hace es redirigir a HTTPS, sin cambiar el host.
rewrite ^ https://mysite.info$request_uri? permanent;
Eso manejará el cambio de host así como el cambio a HTTPS.
Si desea que la redirección sea independiente del protocolo, un mejor enfoque sería:
rewrite ^ $scheme://mysite.info$request_uri? permanent;
En versiones recientes de nginx, esto también funciona (y debería ser un poco más rápido):
return 301 $scheme://mysite.info$request_uri;