Certificado SSL basic 1and1 WordPress (https) y redirección de subdominio a dominio

Introducción

El proveedor 1&1 ofrece un certificado SSL gratuito en el hosting desde hace poco tiempo (SSL starter).

Lo he decidido implementar en mi blog, que posee ciertas particularidades, al tener una instalación de WordPress en una carpeta distinta del directorio raíz y además uso un subdominio para él (que apunta a esa carpeta).

Puesto que el certificado SSL es sólo para un dominio (o subdominio), tengo que modificar la configuración de WordPress y efectuar redireccionamientos del subdominio al dominio principal, para así tener https en todo el blog.

WordPress en Carpeta distinta de la raíz y Subdominio

En principio, instalar WordPress en una carpeta distinta a la raíz es simple, y la propia interfaz de administración de WordPress permite hacerlo y crea automáticamente los archivos necesarios (index.php y .htaccess)

(ver ayuda de wordpress: https://codex.wordpress.org/Installing_WordPress paso 4)

Estos cambios en el panel de administración de WordPress producen cambios en dos variables de la base de datos, en la tabla wp_options, que son siteurl (instalación de wordpress) y home (página de inicio).

Es muy importante la consistencia entre estos valores de la administración de WordPress y los de la base de datos, pues existe una manera de saltarse los valores de la base de datos añadiendo en wp-config.php las directivas:

define('WP_HOME', 'http://mysite.com/');
define('WP_SITEURL', 'http://mysite.com/blog');

Esto está bien para corregir algún problema temporal de acceso a la administración de WordPress , pero una vez que conseguimos el acceso, hay que configurarlo todo de manera consistente y eliminar esas directivas del archivo wp-config.php.

En mi caso particular, quiero pasar del subdominio que apunta a la carpeta del wordpress (que no va a tener certificado SSL) al dominio principal (apuntando a la carpeta directamente) y donde sí va a haber certificado SSL:

SItuación inicial, WordPress en un Subdominio

Situación Final: WordPress en el dominio principal, https habrá que incluirlo al final de todo el proceso

En ambos casos, en la raíz, existen dos archivos .htaccess e index.php, creados por WordPress, lo que hace es cargar el wordpress desde el directorio donde está instalado.

Activación del certificado SSL

Por tanto, ahora el blog está disponible en las 2 urls, la del dominio principal y la del subdominio. Entonces podemos activar el SSL en el dominio principal, proceso muy simple:

Ahora es cuando hemos de volver a la página de administración de wordpress y cambiar http por https en los enlaces o urls del sitio.

Redireccionar el subdominio

El siguiente paso es redireccionar el subdominio al dominio principal, para no perder todos los enlaces de los buscadores. Hay que tener en cuenta la arquitectura de wordpress, pues es necesario redireccionar correctamente los contenidos de las imágenes y los plugins. Para ello edito el archivo .htaccess en la carpeta a la que apunta el subdomino (la misma donde está instalado el WordPress), así toda petición a este subdirectorio será reenviada al principal, con https:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
 
RewriteCond %{HTTP_HOST} ^blog.abrazalaweb.net
RewriteRule ^wp-content/(.*)$ https://abrazalaweb.net/Directorio_WP/wp-content/$1 [R=301,L]
 
RewriteCond %{HTTP_HOST} ^blog.abrazalaweb.net
RewriteRule ^wp-includes/(.*)$ https://abrazalaweb.net/Directorio_WP/wp-includes/$1 [R=301,L]
 
#esta para los posts incluso del wp-admin
RewriteCond %{HTTP_HOST} ^blog.abrazalaweb.net
RewriteRule ^(.*)$ https://abrazalaweb.net/$1 [R=301,L]
 
# creadas por Wordpress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
 
# END WordPress

Para acabar, queda finalmente forzar https en la web, es decir, redireccionar todo el tráfico http hacia el dominio principal a https, y esto hay que hacerlo en el .htaccess del directorio raíz (creado por WordPress, al tener distintos valores la carpeta o directorio de instalación, y el directorio del «home».
También hay que tener en cuenta si existe otro dominio en el mismo hosting y para el que no tenemos SSL, con lo que hay que evitar que para él no se fuerce https:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
 
# Forzar https 
RewriteCond %{HTTPS} off
   # No forzar https en otro dominio del mismo directorio raíz sin certificado ssl:
   RewriteCond %{HTTP_HOST} !mi_otro_dominio.es
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 
 
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
 
# END WordPress

Ajustes finales

Es posible que el navegado nos muestre un avisos sobre certificado SSL no válido pen algunos elementos de la  página, y habrá que ir corrigiendo uno a uno, bien editando algún post o modificando algún archivo de los plugins o temas instalados.

Por ejemplo, navegando por algún post, y teniendo activadas las opciones de desarrolllo (F12) se nos muestra fácilmente el problema, cuya reparación es simple (en este caso, modificar el post, añadiendo https a los enlaces de las imágenes)

 

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.