Tutorial redirecciones 301 en htaccess para PrestaShop
Buenas Prestashoperos! Con este post inauguro la sección e-commerce junto con la etiqueta PrestaShop, ya que desde hace 4 años lucho día a día contra esta plataforma. Día a día, batalla a batalla, intento conseguir lo que me propongo para optimizar PrestaShop ya sea mejorando la velocidad, optimizaciones seo y todas esas cosas… 🙂
En este primer capítulo os voy a contar la primera batalla en la que consistió con las redirecciones 301. Hoy en día, existe una gran cantidad de información sobre redirecciones permanentes, pero muy dispersa, por ello he querido recoger todos los ejemplos que me he encontrado a lo largo de mi particular guerra con PrestaShop.
¿Qué es el fichero htaccess?
El fichero htaccess es un fichero de texto que lleva la voz cantante con los accesos a nuestra web. En el .htaccess podemos implementar diversas funciones como activar compresión de archivos del servidor, bloquear robots maliciosos, controlar acceso a carpetas, crear redirecciones temporales y permanentes, y muchas más cosas.
¿Qué es una redirección?
Una redirección es cuando queremos indicar que hemos cambiado o movido de lugar una URL a otra URL. Existen dos tipos de redirecciones:
- Una redirección 301 es una redirección permanente, en palabras de calle es cuando te mudas de casa y le dices al cartero que las cartas ya no las envié a tu dirección, si no a la nueva dirección de tu nueva casa. Es decir, todo el tráfico destinado a la URL A se redirigirá a la URL B, así como toda la autoridad y el SEO que pueda tener la URL A.
- Un redirección 302 es una redirección temporal. Por ejemplo cuando queremos indicar que nuestra web no va a estar disponible por un tiempo.
Tutorial de redirecciones 301 para PrestaShop
En este tutorial voy a contar las redirecciones permanentes que he utilizado en las diferentes tiendas online de PrestaShop que he trabajado.
Para escribir las redirecciones tendremos que abrir el módulo mod_rewrite.c y escribir todas las redirecciones dentro de este módulo:
<IfModule mod_rewrite.c>
…
…
…
</IfModule>
Redireccionar dominio sin www a www (y viceversa)
Esta redirección es una de las primeras redirecciones a comprobar ya que por defecto PrestaShop no redirecciona la web sin www a www y viceversa por lo que la tienda online estará en el punto de mira del algoritmo Panda de Google por contenido duplicado.
Para evitar este problema, tenemos que crear la siguiente redirección:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^tudominio.com
RewriteRule ^(.*)$ http://www.dominioconlastreswww.com/$1 [R=301,L]
El código anterior redirecciona la web sin las www a una web con las www.
Si por el contrario queremos redireccionar la web con www a una web sin www, se tendría que copiar el siguiente código en el .htaccess:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.tudominio.com
RewriteRule ^(.*)$ http://dominioconlastreswww.com/$1 [R=301,L]
Redirecciones sencillas
Cuando sólo queremos mover una página a otra dirección por razones como: cambiar el nombre de la url, corregir errores 404 o mover el contenido a otra página; hay que realizar una redirección con la siguiente sintaxis:
Redirect 301 /antigua-pagina http://www.mitienda.com/nueva-pagina
Hay que tener cuidado con la sintaxis de la redirección ya que la primera URL no contiene el dominio y la segunda si 😉
Eliminar idiomas
Cuando pasamos de tener 2 o más idiomas a uno solo en PrestaShop, tenemos un problema ya que todas las categorías y productos de nuestra tienda estarán indexadas en Google para los dos o más idiomas, por lo que nos queda redireccionar todas las urls indexadas en ingles y castellano y eliminar el idioma de la url.
En este ejemplo, redireccionamos todas las páginas de nuestra tienda en ingles y español a las paginas en español:
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /es/[^\ ]+
RewriteRule ^es/(.*)$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /en/[^\ ]+
RewriteRule ^en/(.*)$ /$1 [L,R=301]
Redirecciones categorías
En el caso de querer redireccionar una o varias categorías a otra utilizaremos el siguiente código:
RewriteCond %{HTTP_HOST} ^www.mitienda.com$
RewriteRule ^(categoria-1|categoria-2|categoria-3)/(.*)$ http://www.mitienda.com/categoria-nueva/$2 [R=301,L]
Con este código redireccionaremos el contenido de las categorías 1,2 y 3 a la url de la nueva categoría. Es decir:
- mitienda.com/categoria-1/ redirecciona a www.mitienda.com/categoria-nueva/
- mitienda.com/categoria-2/ redirecciona a www.mitienda.com/categoria-nueva/
- mitienda.com/categoria-3/ redirecciona a www.mitienda.com/categoria-nueva/
- mitienda.com/categoria-1/subcategoria-1 redirecciona a www.mitienda.com/categoria-nueva/subcategoria-1
- mitienda.com/categoria-1/miproducto-1 redirecciona a www.mitienda.com/categoria-nueva/miproducto
Pues con esto es todo PrestaShoperos, espero que os sirva de ayuda para vuestros proyectos y si tenéis cualquier duda respecto las redirecciones no dudes en comentar 😉
Si quieres que un especialista lleve el mantenimiento de tu tienda online en PrestaShop, no dudes en ver mi servicio de mantenimiento de PrestaShop o el servicio de SEO en PrestaShop.
Ahora solo queda una última cosa, solo te pido que compartas en las redes sociales este tutorial si no es mucho pedir 🙂