Para optimizar un sitio web según las normas SEO, debe tener un solo dominio. Un subdominio con www se considera un dominio separado, en caso de que sea inaccesible, dará lugar a contenido duplicado. Lo que significa. Duplicados - elementos no deseados, a menudo se convierten en la causa de una disminución de la posición del sitio en los motores de búsqueda. Por eso vale la pena hacer una redirección del dominio www a sin www. Así que al principio, el subdominio www se utilizó para indicar al servidor que no puede implementar un servidor web y alojado el sitio. Ahora esto ya no es necesario. En este artículo vamos a ver cómo hacer una redirección de www a no www Nginx.
La forma más sencilla de hacer una redirección en Nginx para el dominio www es crear una sección de servidor separada para él y redirigir desde allí. Por ejemplo:
server {
server_name www.losst.ru;
return 301 $scheme://losst.ru$request_uri;
}
En el caso de que necesites designar el manejo de www y no www en la misma sección de servidor, puedes usar una condición y una expresión regular. Cuando la variable host tiene las letras www al principio, debe devolver un código de respuesta 301 y un enlace al que el usuario debe ser redirigido:
if ($host ~* ^www.(.*)$) {
return 301 $scheme://$server_name$request_uri;
}
El código debe añadirse a la sección del servidor del sitio para el que desea configurar la redirección. Si utiliza un certificado SSL de LetsEncrypt, deberá generar una validación tanto para el dominio www como para el dominio no www. La solicitud de confirmación debe devolver una respuesta, no una redirección. Para ello, puede crear una variable $need_redirect
y luego cambiar su valor con algunas condiciones:
set $need_redirect "0";
if ($host ~* ^www.(.*)$) {
set $need_redirect "1";
}
if ($request_uri ~* "well-known") {
set $need_redirect "0";
}
if ( $need_redirect ~ "1") {
return 301 https://$server_name$request_uri;
Cuando la URL contenga la palabra well-known, que se utiliza en la solicitud de validación de dominio para un certificado SSL, la redirección fallará. Guarde la configuración. Guarde la configuración y reinicie Nginx:
nginx -s reload
O:
sudo systemctl restart nginx
A continuación, puede probar si la redirección funciona utilizando curl
:
curl -I www.losst.ru
La redirección volverá, el campo Ubicación tiene una URL a la que redirigir al usuario. Pero si intenta acceder a la URL desde LetsEncrypt, no habrá redirección:
curl -I https://www.losst.ru/.well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxxxxx
Todo funciona como se esperaba. Este es el final de la instrucción.