Los visitantes pasan por varias redirecciones antes de la página
Instrucciones generales. Abra este artículo desde su informe de PageCheck para verlo completado con las cadenas de redirecciones encontradas en su sitio y la regla para su alojamiento (Cloudflare, Plesk, cPanel, Apache o nginx).
Qué es
Un sitio web tiene cuatro direcciones raíz: con y sin www, por http:// y por https://. Los visitantes escriben cualquiera de ellas, y los enlaces antiguos y los resultados de búsqueda apuntan a cualquiera de ellas. Solo una sirve la página; las otras tres deberían enviar al visitante allí con una sola redirección permanente (301), directamente a la dirección https:// y nunca pasando por http://.
Cada redirección adicional es un viaje completo de ida y vuelta al servidor antes de que la página pueda siquiera empezar a cargar, y Google pide que no haya más de una. Un salto de https:// a http:// pone a quien visita el sitio por primera vez en una conexión sin cifrar que cualquiera en la misma red puede leer o desviar.
Qué falla
Una o más de las direcciones raíz necesitan dos o más redirecciones para llegar a la página, pasan por http:// sin cifrar por el camino, usan una redirección temporal, terminan en otro sitio web o nunca llegan a una página.
Cómo arreglarlo
1. Decida la única dirección final y asegúrese de que HTTPS funciona en todos los nombres.
La página se sirve en https://example.com, así que esa es la dirección a la que deben apuntar todas las demás. Antes de añadir ninguna redirección, abra https:// en el otro nombre (www.example.com) en un navegador: no debe mostrar ninguna advertencia de certificado. Los certificados de Let's Encrypt y de Cloudflare cubren ambos nombres cuando ambos están incluidos; si falta uno, añádalo primero al certificado, o cada redirección desde ese nombre empezará con una advertencia.
2. Configure una sola redirección permanente desde cada una de las otras direcciones raíz directamente a la final. Use la regla para el lugar donde responde su sitio (su proveedor puede decírselo): una regla que trate el esquema y el www en el mismo paso, no dos reglas una tras otra. Use un 301, nunca un 302 ni un 307, y conserve la ruta y la cadena de consulta.
Apache o LiteSpeed (también alojamientos Plesk y cPanel con Apache): en el archivo .htaccess de la carpeta principal del sitio, encima de la línea «# BEGIN WordPress»
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]nginx: los bloques server del sitio
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name www.example.com;
# the certificate must cover www.example.com
return 301 https://example.com$request_uri;
}Cloudflare, si el sitio está detrás de él: Rules → Redirect Rules → Create rule
When incoming requests match (custom filter expression):
http.host eq "www.example.com"
Then: Dynamic redirect, status code 301, preserve query string:
concat("https://example.com", http.request.uri.path) -
Plesk: Websites & Domains → Hosting Settings: ponga «Preferred domain» en la forma que eligió (
https://example.com) y marque «Permanent SEO-safe 301 redirect from HTTP to HTTPS». Plesk envía entonces cada una de las otras direcciones raíz a la final en un solo paso. - cPanel: Domains → Redirects: una redirección permanente (301) con comodín desde el otro nombre a la dirección final, «Redirect with or without www», o la regla de .htaccess de arriba.
- Si una CDN o un balanceador de carga termina el HTTPS delante del servidor, el servidor ve http:// sin cifrar y la regla de .htaccess de arriba entra en bucle. Compruebe la cabecera «X-Forwarded-Proto» en lugar de %{HTTPS}, o configure la redirección en la CDN como con Cloudflare.
- Elimine después cualquier otra regla de redirección para estas direcciones (un plugin antiguo de «forzar HTTPS», una segunda redirección del panel de control): son dos reglas las que producen dos saltos.
3. Indique a los navegadores que usen https:// desde el principio.
Cuando https:// funcione en ambos nombres, envíe la cabecera Strict-Transport-Security: max-age=31536000; includeSubDomains en los dos. Un navegador que haya visitado el sitio una vez no vuelve a probar http://, así que el salto por http:// desaparece para los visitantes que regresan. Añada «preload» y envíe el dominio a hstspreload.org solo cuando todos los subdominios funcionen por HTTPS.
4. Compruébalo. Pida a cada dirección raíz su primera respuesta: todas salvo la dirección final deben responder 301 con la dirección final en «location», y la dirección final debe responder 200:
En un terminal
curl -sI http://www.example.com/ | grep -i '^HTTP\|^location' curl -sI https://www.example.com/ | grep -i '^HTTP\|^location' curl -sI http://example.com/ | grep -i '^HTTP\|^location' curl -sI https://example.com/ | grep -i '^HTTP\|^location'
Después vuelva a ejecutar esta comprobación: sigue las cuatro direcciones y enumera cada salto.
Make every root address of my website reach the page in one permanent redirect: http://www.example.com/, https://www.example.com/ and http://example.com/ must each answer 301 straight to https://example.com (same path and query), never via http:// on the way, and https://example.com/ must answer 200.
The site is not known to be behind a CDN.
Steps:
1. Make sure the certificate covers example.com and www.example.com (no warning on https:// for either name).
2. Replace all existing redirect rules for these addresses with ONE rule that handles scheme and host in the same step: on Cloudflare a Single Redirect `http.host eq "www.example.com"` → `concat("https://example.com", http.request.uri.path)` (301, preserve query string) with Always Use HTTPS left on; on Apache/LiteSpeed a RewriteCond %{HTTPS} off [OR] / RewriteCond %{HTTP_HOST} ^www\.example\.com$ / RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L] block above # BEGIN WordPress; on nginx a port-80 server block for both names and a port-443 block for www.example.com, each `return 301 https://example.com$request_uri;`. Behind a TLS-terminating proxy test X-Forwarded-Proto, not %{HTTPS}.
3. Remove the other rules (control panel redirects, force-HTTPS / force-www plugins) so no address takes two hops.
4. Send `Strict-Transport-Security: max-age=31536000; includeSubDomains` on both names once https:// works on both.
5. Verify with curl -sI on all four root addresses: three answer 301 with location https://example.com/… in one hop, the final one 200; show me the output.
Tell me exactly which files or settings you changed.
Resources:
- Google Search Central, redirects and Google Search: https://developers.google.com/search/docs/crawling-indexing/301-redirects
- Cloudflare, Single Redirects: https://developers.cloudflare.com/rules/url-forwarding/single-redirects/
Asunto: example.com – por favor, que cada dirección del sitio redirija a la final en un solo paso Hola: Una comprobación del sitio web (PageCheck) encontró que las direcciones raíz de nuestro sitio (con y sin www, http:// y https://) no llegan todas a la página con una sola redirección permanente. La página se sirve en https://example.com. Por favor: 1. Asegúrese de que el certificado HTTPS cubre tanto el nombre con www como el nombre sin www. 2. Configure una sola redirección permanente (301) desde cada una de las otras direcciones raíz directamente a https://example.com, conservando la ruta, y elimine cualquier otra regla de redirección para ellas (para que ninguna dirección necesite dos saltos y ninguna pase por http://). 3. Envíe la cabecera Strict-Transport-Security en ambos nombres. 4. Compruebe que cada dirección raíz responde 301 a la dirección final en un solo paso, y que la dirección final responde 200. Recursos: - Google Search Central, redirects: https://developers.google.com/search/docs/crawling-indexing/301-redirects ¡Gracias!
Revisa tu sitio para ver si tiene este problema. Revisar un sitio web