Advertencias de contenido mixto en un sitio HTTPS
La página llegó sobre HTTPS y luego pidió algo sobre HTTP. Los navegadores bloquean las partes activas y dejan el candado para el resto.
Mixed Content: The page at 'https://example.com/' was loaded over HTTPS, but requested an insecure resource 'http://example.com/…'.
La consola del navegador denomina las URLs de ofensa exactas —comienza allí, no con un plugin. La mayoría de ellos son enlaces absolutos http:// almacenados en el contenido de correos por un editor que los salvó antes de que existiera el certificado, y la solución duradera es un lugar de búsqueda en la base de datos en lugar de un filtro que reescribirá la salida para siempre.
Las causas más probables primero.
Revisa la lista en orden. Cada comprobación permite confirmar o descartar una causa antes de hacer cambios: las soluciones son distintas y adivinar cuesta más que ejecutar un comando.
| Causa | Cómo comprobarlo | Solución |
|---|---|---|
| http:// URLs almacenadas en contenido de correos | Vea la fuente de la página y busque "http://" seguido de su propio dominio. Los éxitos dentro de la marcación del cuerpo de correo son datos almacenados, no la salida del tema. | Ejecute un registro de bases de datos en las tablas de contenidos. Hágalo con una herramienta que entienda los datos serializados, porque los valores de widget y meta se rompen si la longitud de la cadena se edita ingenuamente. |
| siteurl y el hogar todavía dicen http | Si uno comienza con http://, WordPress construye sus propias URLs de activos y cada página hereda el problema. | Actualizar ambas opciones en el formulario https://. Todo lo que WordPress genera — scripts, estilos, etiquetas canónicas— se deriva de estos dos valores. |
| WordPress no puede decir que está detrás de TLS | is_ssl() devuelve false en un sitio que se sirve claramente sobre HTTPS. Esta es la firma de un proxy inverso que termina TLS arriba. | Confía en el encabezado de protocolos de reenvío antes de cargas de WordPress, así que is_ssl() responde correctamente. Sin él, WordPress sigue generando enlaces http:// no importa lo que diga la base de datos. |
| Un activo de terceros con códigos fijos | La URL bloqueada está en el dominio de otra persona —una fuente, un script, un reproductor integrado— con un esquema http:// explícito. | Cambialo a https:// en el tema o en la embajada. Si el host remoto no tiene certificado, el activo debe ser auto-anfijado o retirado; no hay manera de cargarlo de forma segura. |
Solución paso a paso.
Los comandos requieren WP-CLI y acceso a la consola. Si no los tienes, cada paso explica cómo hacer lo mismo desde el panel o por SFTP.
Obtener la lista del navegador, no de una suposición
Abre la consola en una página de falla. Cada entrada de contenido mixto nombre el recurso, y el patrón a través de ellos generalmente identifica la fuente inmediatamente.
Compruebe lo que WordPress piensa su propia dirección es
Estas dos opciones se encuentran debajo de todo lo demás, por lo que vale la pena confirmar antes de cambiar cualquier contenido.
wp option get siteurl wp option get home
Reescribir URL almacenadas de forma segura
Correr seca primero y leer el informe. Saltar la columna GUID es deliberado: es un identificador, no un enlace, y cambiarla re-notifica a los lectores de alimentación.
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid
Enséñen WordPress está detrás de TLS
Agregue esto por encima de la línea de “detener de editar” en wp-config.php cuando un proxy termina el certificado.
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) { $_SERVER['HTTPS'] = 'on'; }Purge y re-check
HTML en caché contiene las URL antiguas. Despejarlo, luego volver a cargar con la consola abierta y confirmar que la lista está vacía.
wp cache flush
De esto se encarga la plataforma.
TLS termina en el proxy y el nginx del sitio pasa el protocolo remitido a PHP, por lo que is_ssl () es correcto sin una edición wp-config .php y WordPress genera enlaces https:// de la primera solicitud. Los certificados se emiten y se renueven automáticamente, lo que elimina la situación de este error generalmente crece fuera de: un sitio que se ejecutó en http durante meses y acumula enlaces absolutos.
Preguntas frecuentes.
¿Puedo usar un plugin que reescriba URLs en la salida?
¿Por qué sólo se rompe una imagen cuando todo lo demás está bien?
El candado está ahí, pero la consola sigue quejando. ¿Cuál es el correcto?
¿Necesito redirigir http a https también?
Si el problema era otro.
Estos errores pueden parecerse en el navegador.