Cambiar instalación MultiSite de HTTP a HTTPS
Instalé MultiSite con la URL configurada como http://ejemplo.com, pero ahora quiero forzar todas las solicitudes a que vayan por HTTPS, así que estoy intentando cambiar la URL a https://ejemplo.com. He revisado la base de datos y actualizado todos los valores de siteurl
y home
para que tengan https, pero el sitio sigue cargando sobre HTTP, en lugar de redirigir a HTTPS.
Sé que podría configurar algunas reglas en el htaccess, pero eso es propenso a errores. En instalaciones normales WordPress redirige automáticamente todas las solicitudes a las URLs canónicas definidas en los ajustes siteurl
y home
, así que asumo que MultiSite también lo hace.

Me encontré con el mismo problema: en WordPress multisite, no hay una opción o configuración que defina si el dominio de un sitio es HTTP o HTTPS. Incluso después de reemplazar todas las ocurrencias en la base de datos, un visitante del sitio aún puede ingresar y navegar en HTTP, sin ser redirigido a HTTPS.
La siguiente solución simple funcionó para mí: agregué esta regla de mod_rewrite
a mi archivo .htaccess, justo antes de las reglas de reescritura específicas de WordPress.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Dado que esta regla no define un dominio específico, es perfecta para las necesidades de WordPress multisite.
Encontré esta regla en el siguiente hilo: https://stackoverflow.com/questions/4398951/force-ssl-https-using-htaccess-and-mod-rewrite

Este tipo de solución es excelente para un multisitio que tiene un protocolo homogeneizado. Una vez que deseas tener una mezcla de sitios SSL y no SSL en una red multisitio, las cosas se complican. Mucho.

Efectivamente, mi contexto era una red donde cambié todos los sitios a SSL al mismo tiempo.

Todos los plugins que he visto son para configurar páginas específicas para usar HTTPS, no todo el sitio. En instalaciones regulares de WP, el método normal para hacer que todo el sitio use HTTPS es establecer los valores siteurl
y home
. Incluso si hubiera algunos disponibles, hay varias razones por las que usar un plugin es una mala idea cuando puedes simplemente establecer un valor de configuración (seguridad, rendimiento, etc.). Además, estoy bastante seguro de que no importa si el certificado SSL está listo o no. WordPress no va a verificar eso cuando determine cuál es la URL canónica.

Cierto y cierto, solo me preguntaba si ya lo tenías configurado o no (mucha gente no sabe que necesitas un certificado SSL si realmente quieres usar SSL, de ahí la pregunta). Acabo de recordar que tenía un sitio mío en SSL hace un tiempo (no solo páginas específicas, sino todo el sitio como tú lo quieres). Voy a buscar el código.

Mmm... no pude encontrar el código que usé en ese entonces. Sin embargo, encontré esto: http://prosauce.org/blog/2010/08/enable-complete-support-for-ssl-on-wordpress/

Instalé Better WP Security por una razón diferente, pero resulta que tiene una opción para forzar todas las solicitudes de página (frontales y traseras) a pasar por SSL.

La mejor solución sería la que no utiliza ningún plugin en mi opinión. De esa manera, cada solicitud no tiene que ser analizada por el plugin.

Cambié las reglas específicas para un host. Pero ahora redirige todos los demás blogs a este. Cambié "%{HTTP_HOST}" a un dominio específico y mantuve la parte "%{REQUEST_URI}".
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://gezentiyiz.biz%{REQUEST_URI} [L,R=301]
En mi opinión, añadir líneas adicionales de RewriteRule para otros dominios podría resolver el problema, pero me pregunto si hay alguna forma más sencilla de hacerlo. ¿Porque cada vez que se crea un sitio de blog necesitamos modificar el archivo .htaccess???
Edición: Resolví el problema cambiando el RewriteRule así:
RewriteRule http://gezentiyiz.biz%{REQUEST_URI} https://gezentiyiz.biz%{REQUEST_URI} [L,R=301]

"Cambié %{HTTP_HOST}
por un dominio específico" - ¿Pero por qué? Esto suena como una pregunta diferente, más que una "respuesta". ¿Estás intentando ser selectivo y redirigir solo ciertos sitios a HTTPS?? "Resolví el problema cambiando la RewriteRule así" - ¡Excepto que esa regla no tiene sentido y no haría nada! Para hacer que la regla dependa del nombre del host, necesitas verificar el encabezado HTTP Host
solicitado (variable del servidor Apache HTTP_HOST
) en una condición separada (RewriteCond
directive).
