¿Qué debo hacer para convertir mi MultiSite de HTTP a HTTPS?


8

Se me ha encomendado la tarea de convertir aproximadamente 100 sitios en mi instancia multisitio a HTTPS.

Puedo escribir fácilmente una secuencia de comandos para golpear la base de datos y cambiar los valores siteurly homea HTTPS, lo que debería obligar al sitio a poner en cola secuencias de comandos e imágenes incrustadas futuras en HTTPS, ¿verdad?

Bueno, también tendré que revisar todos los post_content para encontrar enlaces internos, así como imágenes usando HTTP y convertirlas a HTTPS.

Probablemente podría unir algo para hacer eso, pero me pregunto qué más necesito cambiar. GUID ¿verdad? Si usara los comandos $ wpdb, ¿tendría que volver a serializar la base de datos después?

Debería haber preguntado primero, ¿hay un complemento confiable que se encargue de esto por mí? ¿Qué más necesito saber sobre este proceso?

Notas: ya tenemos todos los certificados SSL, así que es algo de lo que no tengo que preocuparme. - El servidor está ejecutando Linux (redhat) y apache - El multisitio está usando subdirectorios - No sé mucho más, el servidor está fuera de mi jurisdicción


¿Su sitio múltiple usa subdirectorios o subdominios? ¿Qué servidor web (Apache, nginx, etc.) está utilizando? Eso tendrá cierta relación con el tipo de certificado SSL que está buscando.
Pat J

Gracias Pat, edité mi pregunta con la información que me preguntaste.
rugbert

Tenga cuidado con find automatizado y reemplazar - si se tienen datos serializados en la base de datos, se le rompe cambiando httpa httpssi no cambia la longitud de la cadena también!
Steven

Hola @ Rugbert, ¿pudiste resolver esta pregunta? Solo comprobando si mi respuesta fue útil para su pregunta.
Ethan Jinks O'Sullivan

Respuestas:


1

Puede ejecutar un script para ACTUALIZAR todas las URL y guías a https, si desea una configuración limpia.

Pero también considere alternativas como:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R,L]
</IfModule>

En wp-config.php para el backend:

define('FORCE_SSL_ADMIN', true);

En wp-config.php para la interfaz (o ejecute un script db UPDATE):

define('WP_HOME','https://example.com');
define('WP_SITEURL','https://example.com');

Luego, simplemente podría ejecutar un script para ACTUALIZAR toda la url de contenido de wp_posts.


0

Este proceso en realidad implica comprar un Certificado de seguridad y aplicarlo a su servidor para sus sitios web. A su vez, esto obligará a todos los visitantes a una conexión segura a través del certificado presentado por su servidor. Estos certificados se denominan SSL Certs: http://www.DigiCert.com/SSL-Certificates


Gracias John, olvidé mencionar que tenemos todos los certificados SSL.
rugbert

Ok, en ese caso, ¿se han aplicado los certificados y todos sus sitios se han incluido correctamente en los archivos DNS? Tengo que preguntar ¿aloja en el sitio o con un tercero? ¿Qué sistema operativo es el entorno del servidor?
John Lucey

Estamos utilizando un tercero para alojar. No tengo demasiada información o acceso al servidor, pero es un servidor Linux Redhat que ejecuta Apache. Estoy más preocupado por lo que necesito para el DB
rugbert

1
No creo que haya que hacer nada en la base de datos. SSL es del lado del servidor, no DB. Mi consejo sería asegurarse de que los Certs se hayan aplicado al servidor y verificar mediante https en su URL para probar la validez. Si aparece el sitio, debería poder escribir la URL anterior sin https y automáticamente le traerá https. Ha pasado un tiempo desde que desplegué un certificado tan tristemente que no puedo ayudarlo con esos pasos, pero sus ingenieros deberían poder manejar eso por usted, así como el archivo de redireccionamiento DNS en el servidor para corregir el lado del servidor de URL.
John Lucey

0

Una posible forma de hacer esta modificación de datos es usar WP-CLI en el terminal.

En primer lugar, debe asegurarse de tener una copia de seguridad y una estrategia de restauración sólida en caso de que algo salga mal. También debe probar este procedimiento en un sistema local o de prueba con una copia de la base de datos en vivo.

Los pasos básicos son, iterar sobre cada sitio de su red y reemplazar las URL de cada sitio utilizando el search-replacecomando WP-CLI .

Aquí hay un bash one-liner:

for SITE in $(wp site list --field=url); do wp search-replace "{$SITE}" "${SITE/http:/https:}" --dry-run --precise --network --verbose; done

Examinemos eso:

for SITE in $(wp site list --field=url);

Ese comienza un bucle para cada línea de la salida del comando dentro $()y escribe cada línea en la variable $SITE.

$(wp site list --field=url)

Ese es el site listcomando WP-CLI que le brinda una lista de todas las URL del sitio en su red. Ejecute este comando únicamente, probablemente verá algo como:

http://your-site.tld/
http://your-site.tld/site2/
http://another-of.your-site.tld/
...

Ahora

...); do

solo comenzará la parte del bucle interno.

El comando del bucle interno hace toda la magia (lo dividí en dos líneas usando \para facilitar la lectura):

wp search-replace "$SITE" "${SITE/http:/https:}" \
--dry-run --precise --network --verbose

Decimos a WP-CLI para buscar para $SITE(por ejemplo https://your-site.tld/) y reemplazar con una versión ligeramente modificada: ${SITE/http:/https:}. Esta es una cadena bash que reemplaza la operación que reemplaza http:con https:. (Entonces, resolviendo las variables, el comando se vería así wp search-replace "http://your-site.tdl/" "https://your-site.tld/").

search-replacetiene muchas opciones posibles que se describen en la documentación . En el ejemplo usé estos:

--dry-run --precise --network --verbose

--dry-runy --verboseson claramente útiles para probar el comando.

--network aplica la operación de búsqueda y reemplazo también a las tablas de red.

--precisele dice a WP-CLI que use PHP en lugar de SQL para buscar y reemplazar los valores. Eso asegura que los valores serializados no se corrompan.

Finalmente el ciclo se cierra con

; done

Permítanme enfatizarlo nuevamente: pruebe esto profundamente antes de comenzar a usar esto en la producción. Debe comprender cómo funciona y qué hace WP-CLI. Utilicé WP-CLI antes para realizar tales operaciones de Searach y reemplazar para migrar sitios múltiples a otros nombres de dominio, pero no para cambiar de httpa https.

Puede haber algunos casos extremos: WP-CLI todavía lee wp-config.phpe intenta encontrar una «red» coincidente en la base de datos utilizando las constantes en wp-config.php. Si está manipulando un sitio (la base de datos) pero no el otro (las constantes en wp-config.php), podría tener problemas. Pero para su caso, creo que eso no será un problema, ya que WP generalmente depende DOMAIN_CURRENT_SITEy PATH_CURRENT_SITEno cambiarán de todos modos. Pero de nuevo, pruebe esto a fondo.

Con un poco más de magia bash, también podría dividir este ciclo en trozos de 5 o 10 sitios y recorrerlo paso a paso.



Haces la pregunta en la dirección equivocada. La correcta sería: ¿por qué debería uno usar este complemento? ¿Cuáles son los beneficios en comparación con el enfoque CLI descrito?
David

0

Para garantizar que todos sus sitios web utilicen HTTPS en su post_content, puede realizar una de dos opciones:

1. Backend: ejecutar una consulta SQL

Para asegurarse de que todos sus enlaces HTTP estén configurados como HTTPS, use la siguiente consulta SQL:

UPDATE wp_options SET option_value = replace(option_value, 'OLD_URL', 'NEW_URL') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'OLD_URL','NEW_URL');
UPDATE wp_posts SET post_content = replace(post_content, 'OLD_URL', 'NEW_URL');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'OLD_URL','NEW_URL');
  • OLD_URLserá reemplazado con http://example.com(no HTTP)
  • NEW_URLserá reemplazado con https://example.com(HTTPS)

Esto cubrirá el siteurl, homey todo su contenido en su sitio web a la nueva HTTPS.

2. Frontend: use el complemento Buscar y reemplazar

Un enfoque más fácil de usar es usar el complemento Buscar y reemplazar para reemplazar fácilmente todas las tablas que contienen su antiguo HTTP y cambiarlas a HTTPS. El proceso es fácil de usar y puede previsualizar qué tablas y filas se verán afectadas antes de aplicar esos cambios.

Preaviso

Antes de aplicar cualquier cambio, creo que es evidente que siempre haga una copia de seguridad de su base de datos en caso de que algo salga mal.


0

HTTP es un protocolo predeterminado, que es utilizado por la mayoría de los sitios web para manejar la información a través de la web. Su sitio web se ejecuta en HTTPS sin ningún mensaje de error, significa que su certificado se ha instalado correctamente. Debe migrar todo su sitio web de HTTP a HTTPS.

Aprenda cómo mover HTTP a HTTPS para WordPress

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.