Advertencias de contenido mixto después de cambiar la dirección del sitio de HTTP a HTTPS

4 abr 2017, 18:35:15
Vistas: 17.9K
Votos: 5

Cambié la dirección de mi sitio de HTTP a HTTPS simplemente modificando la URL en Ajustes -> General (Dirección de WordPress y Dirección del sitio). No hay ningún problema en el área de administración, todo funciona correctamente.

Lo que ocurre en la parte pública del sitio web: hay mucho "contenido mixto", por lo que Firefox indica que el sitio no es seguro. Noté (al ver el código fuente) que casi todas las imágenes que he subido a la galería multimedia todavía se "renderizan" con HTTP en lugar de HTTPS.

¿Qué puedo hacer para servir las imágenes, fuentes, etc. con una URL HTTPS?

[ACTUALIZACIÓN] Encontré que algunos problemas se pueden solucionar editando dos archivos del tema que tenían "http://" escrito directamente. El problema principal son las imágenes; si no quieres modificar la base de datos, aparentemente no hay solución.

0
Todas las respuestas a la pregunta 5
14

Esto ocurre porque WordPress guarda las URLs en el contenido de forma absoluta por defecto (lo que significa que en realidad tiene tus URLs guardadas como http://ejemplo.com en la base de datos). Para solucionarlo, necesitarás ejecutar una búsqueda y reemplazo en tu base de datos para corregir esos errores.

Me gusta usar el plugin Better Search Replace porque tiene una función útil que te permite probar tu búsqueda/reemplazo en modo de prueba. Hay muchos otros métodos de búsqueda/reemplazo, e incluso podrías hacer los cambios directamente en PhpMyAdmin, pero aquí solo daré instrucciones para usar el plugin Better Search Replace.

Asumiendo que estás usando Better Search Replace:

  1. ¡HAZ UNA COPIA DE SEGURIDAD DE TU BASE DE DATOS! Siempre, siempre, siempre. Usa cualquier herramienta que prefieras para esto (UpdraftPlus, exportarla (NO ELIMINARLA) desde PhpMyAdmin o directamente desde MySQL son algunas opciones).
  2. Ve a Herramientas > Better Search Replace
  3. Agrega la versión no SSL de tu sitio web en el campo de búsqueda (ej. http://ejemplo.com) y la versión SSL de tu sitio web en el campo de reemplazo Ejemplo de búsqueda y reemplazo 1
  4. Selecciona las tablas que deseas actualizar. Lo más probable es que solo necesites las tablas wp_posts y wp_postmeta, pero puedes seleccionarlas todas si lo prefieres. Solo ten en cuenta que podría tomar más tiempo y agotar el tiempo de espera dependiendo de las especificaciones de tu servidor.Selecciona tus tablas
  5. Ejecuta una prueba en seco para asegurarte de que funcione Prueba en seco
  6. Si funciona, desmarca la opción de prueba en seco y ejecútalo de verdad.
  7. Revisa tu sitio web para verificar que los errores se hayan corregido. Si es así, ¡genial!

Nota: Cada vez que realizas una búsqueda/reemplazo, existe la posibilidad de causar problemas graves en tu sitio web. De ahí el primer paso: hacer una copia de seguridad. Si algo sale mal, tendrás una forma de restaurar tus datos.

4 abr 2017 19:04:10
Comentarios

Recientemente actualicé a SSL y Better Search Replace fue un cambio radical. Haz una copia de seguridad de tu base de datos antes de usarlo.

Christine Cooper Christine Cooper
4 abr 2017 19:23:52

@Ian Estoy realmente sorprendido, y muy decepcionado con WP si se requiere una solución como esta

3000 3000
4 abr 2017 19:44:58

Sí, la forma en que WP guarda las URLs, especialmente para los recursos, es súper molesta.

Ian Ian
4 abr 2017 19:46:05

Entonces, ¿qué (diablos) hace WordPress cuando reemplazas http por https en Ajustes > Generales?

3000 3000
4 abr 2017 19:52:40

Votado negativo porque simplemente reemplazar texto en las publicaciones es demasiado por un lado (si enlazas a una URL http de un pdf en tu sitio y quieres mantenerlo como http), y podría no ser suficiente (si incrustas una imagen via http desde otro sitio).

Mark Kaplun Mark Kaplun
5 abr 2017 12:12:14

@MarkKaplun Estoy realmente sorprendido por el comportamiento de WP en este caso: supongo que esto pasaría incluso si tomas tu base de datos y mueves todo el sitio web a otro dominio. Honestamente, requiere demasiado trabajo

3000 3000
5 abr 2017 12:21:28

@3000 en realidad las personas que te dicen "solo usa Let's Encrypt" o cosas por el estilo, simplemente te venden humo. HTTPS es complicado por todo tipo de razones, por ejemplo podrías necesitar usar alguna biblioteca JS que solo se sirve en HTTP, lo que dejará de funcionar en HTTPS (de hecho, es un problema que tuvo un cliente mío). Para ser completamente HTTPS no basta con manejar correctamente tus URLs internas, sino también las de los recursos externos utilizados en tu sitio, que generalmente pueden requerir solo cambiar HTTP a HTTPS...

Mark Kaplun Mark Kaplun
5 abr 2017 12:30:57

...(si es compatible) pero para algunos necesitarás usar una URL totalmente diferente para obtener el mismo recurso. En resumen, no es nada trivial y no hay una "solución única para todos", por lo que incluso si el núcleo hubiera querido manejarlo, básicamente no hay manera de hacerlo bien para todos. Personalmente, simplemente ignoro las advertencias de contenido mixto, sus implicaciones de seguridad son insignificantes si inicias sesión a través de HTTPS y es extremadamente difícil limpiarlas todas.

Mark Kaplun Mark Kaplun
5 abr 2017 12:33:27

cambiar las imágenes para usar protocolo neutral es probablemente la victoria más fácil y grande que puedes tener en este frente, y puedes hacerlo con un pequeño fragmento de código o mediante búsqueda y reemplazo, pero uno que apunte específicamente a las URLs de medios.

Mark Kaplun Mark Kaplun
5 abr 2017 12:35:19

@MarkKaplun El 99% de mi problema actual es con las imágenes: encontré algunas URLs http para recursos externos (JS y fuentes) pero verifiqué y se pueden reemplazar fácilmente con https. He estado desarrollando (otras cosas) durante años y, como desarrollador, siento que este problema de rutas es realmente algo "sorprendente", por no decir increíble

3000 3000
5 abr 2017 12:59:27

@300 en parte esto es el resultado de que el núcleo nunca completó el (ya muy antiguo) plan de tener una migración a otra URL raíz como parte del núcleo. Si existiera tal herramienta al menos parte del dolor no estaría ahí.

Mark Kaplun Mark Kaplun
5 abr 2017 13:08:20

@Mark Kaplun De hecho, inicialmente pensé que era solo cuestión de editar la URL en los ajustes generales (y por supuesto redirigir a https), pero estaba equivocado

3000 3000
5 abr 2017 13:18:15

Definitivamente no entiendo el voto negativo. Esta es una respuesta legítima, incluso si no es lo que el OP esperaba. Dada la importancia de SSL hoy en día, especialmente para SEO, esta es una buena manera de solucionar esas advertencias de contenido mixto. Hay otras respuestas en esta pregunta que no usan el método de buscar y reemplazar, ¡genial! ¡El propósito principal de este sitio web es proporcionar preguntas y respuestas de alta calidad para ayudarnos mutuamente!

Ian Ian
5 abr 2017 16:26:58

@Ian Si esto puede ser útil, probé cosas muy similares a las que explicas simplemente usando la función de búsqueda dentro de PHPMyAdmin y un reemplazo MySQL. En mi caso, las únicas tablas afectadas son wp_posts (miles), wp_options y wp_usermetas (muy pocas entradas). Además, encontré un comentario muy interesante aquí: http://wordpress.stackexchange.com/questions/90206/wp-posts-guid-update (el que tiene fondo amarillo) :-)

3000 3000
7 abr 2017 19:25:31
Mostrar los 9 comentarios restantes
5

Necesitarás redirigir todo tu tráfico de HTTP a HTTPS. Una regla de reescritura puede hacer esto por ti. Utiliza este código en lugar de la regla de reescritura original de WordPress (si no estás usando caché) en tu archivo .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{ENV:HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

También hay plugins que pueden hacer esto por ti, como Easy HTTPS Redirection.

4 abr 2017 19:02:31
Comentarios

¡Esta es una muy buena manera de proceder sin meter las manos en la base de datos!

Ian Ian
4 abr 2017 19:05:22

@Jack Johansson Redirijo el sitio web de esta manera pero también hay contenido mixto. Por alguna razón, las rutas de las imágenes deben estar hard-codeadas en algún lugar (no puedo encontrar dónde está ese "algún lugar") :-)

3000 3000
4 abr 2017 19:41:39

@3000 ¿Las imágenes están bajo el mismo dominio que el tuyo? Incluso si están hard-codeadas, la regla de reescritura debe redirigirlas. ¿Estás usando algún tipo de CDN?

Johansson Johansson
4 abr 2017 19:43:18

@JackJohansson He notado que tengo tres tipos de problemas: imágenes (bajo el mismo dominio), fuentes (CDN) y un widget de Flickr que ya no funciona (también servido desde una dirección http externa)

3000 3000
4 abr 2017 19:46:34

Esto funcionará para redirigir las URLs (y es una buena idea si estás cambiando a todo-HTTPS), pero en ese punto ya es demasiado tarde para prevenir las advertencias de contenido mixto. La URL en la página necesita ser HTTPS desde el principio.

Matthew Crumley Matthew Crumley
4 abr 2017 23:08:26
0

Utilicé Better Search Replace y Really Simple SSL y el ganador es:

Really Simple SSL

Solo haz esto:

  1. Instálalo
  2. Actívalo
  3. Permite SSL

Listo

También solucionó todos los problemas con la redirección de imágenes

15 ene 2019 11:44:31
2
-1

Instala este plugin: https://wordpress.org/plugins/http-https-remover/

A pesar del nombre - HTTP / HTTPS Remover - la última versión forzará todas las conexiones http a https, y tus advertencias de contenido mixto desaparecerán.

4 abr 2017 19:03:40
Comentarios

El problema con un plugin como este es: debo saber lo que hace "a bajo nivel" (si un plugin rompe mi sitio web, debo crear el sitio web de nuevo)

3000 3000
4 abr 2017 19:50:48

votado negativo ya que tal como está ahora no es una respuesta muy útil. Este podría ser el mejor plugin para manejar el problema, pero las personas que lean la respuesta deberían tener una buena idea de lo que hace y cómo

Mark Kaplun Mark Kaplun
5 abr 2017 12:01:51
5
-1

Acabo de migrar el sitio de mi empresa a la versión solo segura el viernes pasado. Utilicé el Plugin Really Simple SSL y luego agregué una redirección 301 en mi archivo .htaccess.

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

No olvides verificar también la versión HTTPS de tu sitio en Search Console / Herramientas para webmasters

4 abr 2017 19:12:38
Comentarios

¿redireccionar a tu archivo htaccess?

3000 3000
4 abr 2017 19:48:55

He añadido el código a mi archivo .htaccess que redirigiría cualquier cosa http a https.

fwho fwho
4 abr 2017 19:51:47

De todos modos, este código no está funcionando para mí: imágenes, etc. todavía se sirven con http:// y no https://. Supongo - corrígeme si estoy equivocado/a - que es un problema de caché

3000 3000
4 abr 2017 20:30:13

Podría estar completamente equivocado, pero no creo que una imagen se almacene en caché y cargue a través de https desde una versión no segura. ¿Estás enlazando con la URL completa, como http://example.com/image.png en el texto mismo?

fwho fwho
4 abr 2017 20:41:01

WP crea directamente enlaces con http:// prependido: Descargué la base de datos y los enlaces están por todas partes

3000 3000
5 abr 2017 09:27:07