Saltar al contenido

Migrar SMF de HTTP a HTTPS (Redirect 301 con Pretty URLs)

Viendo la importancia que Google está dando para el posicionamiento a las páginas seguras (con HTTPS), estoy migrando todas mis páginas web a este sistema, que además de ofrecer más seguridad para los visitantes parece que provoca mejores resultados con el algoritmo de Google.

Para los blogs con WordPress la migración es sencilla. Tras instalar el certificado SSL en cada dominio, el plugin Really Simple SSL se encarga de todo.

Migrar SMF de HTTP a HTTPS (Redirect 301 con Pretty URLs)
Migrar SMF de HTTP a HTTPS (Redirect 301 con Pretty URLs)

Para este foro realizado con Simple Machines Forum (SMF) el proceso ha sido un poco más complicado. Por un lado he instalado el archivo repair_settings.php que permite modificar toda la configuración del foro, donde he cambiado todas las referencias http:// a https://   Más info sobre este archivo y descarga en https://wiki.simplemachines.org/smf/Repair_settings.php/es

Una vez que el foro ya estaba funcionando correctamente con HTTPS, el problema viene al comprobar que accediendo a través de los resultados de Google seguían cargando las páginas HTTP antiguas. Por lo tanto, el objetivo era aplicar una redirección 301 para que las páginas HTTP cambien automáticamente a HTTPS y, por otro lado, notificar este cambio a Google para evitar que las páginas sean desindexadas y tener que empezar a posicionar las páginas de nuevo.

Aunque esta redirección 301 es sencilla, la cosa se ha complicado al utilizar la modificación Pretty URLs en el foro, que hace uso de una configuración especial del fichero .htaccess

Tras varias horas de búsquedas por Google y pruebas, he dado con la configuración perfecta, que redirige todo el tráfico a HTTPS mediante una redirección 301 (como a Google le gusta). Este es el código:

Código: [Seleccionar]

# PRETTYURLS MOD BEGINS
# Pretty URLs mod
# http://code.google.com/p/prettyurls/
# .htaccess file generated automatically on: August 2, 2017, 21:56

RewriteEngine on
RewriteBase /foro

### Force HTTPS
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Rules for: actions
RewriteRule ^(activate|admin|ads|announce|attachapprove|buddy|calendar|clock)/?$ ./index.php?pretty;action=$1 [L,QSA]
RewriteRule ^(collapse|coppa|credits|deletemsg|display|dlattach|editpoll|editpoll2)/?$ ./index.php?pretty;action=$1 [L,QSA]
RewriteRule ^(emailuser|findmember|forum|portal|groups|help|helpadmin|im)/?$ ./index.php?pretty;action=$1 [L,QSA]
RewriteRule ^(jseditor|jsmodify|jsoption|lock|lockvoting|login|login2|logout)/?$ ./index.php?pretty;action=$1 [L,QSA]
RewriteRule ^(markasread|mergetopics|mlist|moderate|modifycat|modifykarma|movetopic|movetopic2)/?$ ./index.php?pretty;action=$1 [L,QSA]
RewriteRule ^(notify|notifyboard|openidreturn|pm|post|post2|printpage|profile)/?$ ./index.php?pretty;action=$1 [L,QSA]
RewriteRule ^(quotefast|quickmod|quickmod2|recent|register|register2|related|reminder)/?$ ./index.php?pretty;action=$1 [L,QSA]
RewriteRule ^(removepoll|removetopic2|reporttm|requestmembers|restoretopic|search|search2|sendtopic)/?$ ./index.php?pretty;action=$1 [L,QSA]
RewriteRule ^(smstats|suggest|spellcheck|splittopics|stats|sticky|postscheduler|theme)/?$ ./index.php?pretty;action=$1 [L,QSA]
RewriteRule ^(trackip|about:mozilla|about:unknown|unread|unreadreplies|verificationcode|viewprofile|vote)/?$ ./index.php?pretty;action=$1 [L,QSA]
RewriteRule ^(viewquery|viewsmfile|who|.xml|xmlhttp)/?$ ./index.php?pretty;action=$1 [L,QSA]

# Rules for: boards
RewriteRule ^([-_!~*'()$a-zA-Z0-9]+)/?$ ./index.php?pretty;board=$1.0 [L,QSA]
RewriteRule ^([-_!~*'()$a-zA-Z0-9]+)/([0-9]*)/?$ ./index.php?pretty;board=$1.$2 [L,QSA]

# Rules for: topics
RewriteRule ^([-_!~*'()$a-zA-Z0-9]+)/([-_!~*'()$a-zA-Z0-9]+)/?$ ./index.php?pretty;board=$1;topic=$2.0 [L,QSA]
RewriteRule ^([-_!~*'()$a-zA-Z0-9]+)/([-_!~*'()$a-zA-Z0-9]+)/([0-9]*|msg[0-9]*|new)/?$ ./index.php?pretty;board=$1;topic=$2.$3 [L,QSA]

# PRETTYURLS MOD ENDS