Algo muy común a la hora de realizar una aplicación web es la necesidad de redireccionar todo el tráfico a https, además de hacerlo al dominio raíz desde el www (o viceversa). Esto, como ya sabrás, se hace para que Google no cuente nuestra web como contenido duplicado, beneficiando ésto el SEO de nuestra página web de forma bastante significativa.
Vamos a explicar esto en detalle por si no conoces este caso, imagina la home de esta web antonioperez.pro, pues bien, en realidad, habría cuatro formas de llegar hasta esta home:
- http://antonioperez.pro
- http://antonioperez.pro
- http://antonioperez.pro
- http://antonioperez.pro
Efectivamente, estas 4 URLs llegan al mismo sitio, la home de esta web. Pues bien, para Google y el resto de buscadores esto significa que hay 4 URLs con el mismo contenido, lo que significa que tenemos contenido duplicado, algo que Google penaliza, no tiene buena pinta ¿verdad? Como no queremos esto, tenemos que ponerle solución.
La solución es, efectivamente, redireccionar todo el tráfico a una de estas 4 URLs, normalmente lo vamos a redireccionar al https, de esta forma haremos que el tráfico esté encriptado (para poder hacer esto debes haber instalado un certificado SSL, algo muy recomendable, pero no nos vamos a entretener ahora en esto)
La forma más normal de hacer esto es a nivel de servidor, en la mayoría de los casos estarás trabajando sobre un servidor apache, en otros casos lo harás sobre un servidor con motor NGINX, etc…
En nuestro caso vamos a explicar como hacerlo directamente en nuestra app de rails, y así no tendremos que tocar nada en los archivos de configuración de nuestro servidor, para ello, trabajaremos sobre un controlador, más concretamente sobre el archivo application_controller.rb en la carpeta app/controllers
En primer lugar vamos a redirigir todo el tráfico al dominio raíz, de forma que cuando alguien llegue a través de www.tudominio.com la app de rails lo rediría directamente a tudominio.com.
Para esto añadiremos el siguiente snippet de código a nuestro application_controller.rb
# app/controllers/application_controller.rb APP_DOMAIN = 'tudominio.com' before_filter :ensure_domain def ensure_domain unless request.env['HTTP_HOST'] == APP_DOMAIN || Rails.env.development? redirect_to "http://#{APP_DOMAIN}", :status => 301 end end
Con esto ya tenemos redirigido el tráfico al raíz, lo cual ya nos soluciona gran parte del problema, pero no es suficiente si además tenemos instalado nuestro certificado SSL, ya que la gente aún puede acceder al http://tudominio.com y a https://tudominio.com, aún tenemos contenido duplicado, aún tenemos que hacer un pequeño ajuste a nuestro código, de hecho, el ajuste es el siguiente:
# app/controllers/application_controller.rb before_filter :force_ssl def force_ssl if Rails.env.production? redirect_to :protocol => 'https' unless request.ssl? end end
Y listo, acabamos de redireccionar todo nuestro tráfico a https, ahora, cualquier visita que venta a la web llegará directamente a https://tudominio.com, independientemente de la URL a la que esté dirigida con o sin www, o bien desde http y https.
Este procedimiento con Rails nos evita tener que tocar la configuración propia del servidor, lo que en muchas ocasiones nos resolverá más de un problema y muchas horas de pruebas y mas pruebas hasta ajustar todo en el servidor.
Deja un comentario con tus impresiones, opinión o métodos alternativos, estaré encantado de conocer cada una de ellas.
Deja una respuesta