Es muy frecuente que en nuestra labor como programador tengamos que reformar sitios que usan un sistema diferente al que nosotros utilizamos, o que simplemente está desfasado en cuanto a técnicas usadas. Es importante saber que cuando hacemos un cambio estructural de direcciones en una web, también tenemos que avisar a Google de ello, para ello se usan las redirecciones 301 que básicamente le dice al señor de las búsquedas que una página o varias ya no se encuentran en esa dirección, si no en otra.
Esto es tan importante para el SEO que si no se hace vamos a perder muchas visitas e inundaremos a los usuarios de errores 404 no deseados. Toda buena estrategia de reestructuración de un sitio web debe estar acompañada de un plan para hacer que las viejas URL de nuestro sitio lleven a las nuevas por lo anteriormente comentado.
El fichero htaccess
El fichero .htaccess (hypertext access), también conocido como archivo de configuración distribuida, es un fichero especial, popularizado por el Servidor HTTP Apache que permite definir diferentes directivas de configuración para cada directorio (con sus respectivos subdirectorios) sin necesidad de editar el archivo de configuración principal de Apache.
Este fichero lo podemos encontrar en nuestra carpeta raiz del sitio, si no está creado nos podemos tomar la libertad de hacerlo, algunos gestores de contenido como WordPress lo crean automáticamente para usar el sistema de permalink con URL amigables.
Para editarlo solo tenemos que abrirlo con nuestro editor favorito y comenzar a escribir en él. Hay que tener en cuenta que al ser un fichero precedido por un punto (.) normalmente suele estar oculto en algunos sistemas operativos, por lo que tendremos que habilitar la función de ver archivos ocultos en el sistema.
Redireccionar una sola página
Redirect 301 /recursos/ https://statickidz.com/recursos-gratis/
Redireccionar todo el sitio
Redirect 301 / https://statickidz.com/
Redireccionar un directorio a otro sitio
Redirect 301 /subdirectorio https://statickidz.com/
Redireccionar todos los archivos HTML a PHP
RedirectMatch 301 (.*)\.html$ https://statickidz.com$1.php
Redireccionar de un dominio viejo a uno nuevo
RewriteEngine On RewriteBase / RewriteRule (.*) http://www.nuevodominio.com/$1 [R=301,L]
Redireccionar todo a www
Toda nuestra página será vista bajo www.dominio.com en vez de solo dominio.com y así evitaremos el contenido duplicado en Google.
RewriteEngine On RewriteBase / rewritecond %{http_host} ^domain.com [nc] rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]
Redireccionar de un dominio viejo a uno nuevo con el path y una variable GET
Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*) http://www.nuevodominio.com%{REQUEST_URI} [R=302,NC]
URL Original: http://www.viejodominio.com/frutas/verduras.php?id=23
URL Destino: http://www.nuevodominio.com/frutas/verduras.php?id=23
Redireccionar una URL con una variable GET
RewriteEngine On RewriteCond %{QUERY_STRING} id=23 RewriteRule ^index\.php$ /nueva-ruta/? [L,R=301]
URL Original: http://www.ejemplo.com/index.php?id=23
URL Destino: http://www.ejemplo.com/nueva-ruta/
Redireccionar un directorio entero
RewriteEngine On RewriteRule ^viejo/?$ $1/nuevo$2 [R=301,L]
URL Original: http://www.ejemplo.com/viejo/pagina.html
URL Destino: http://www.ejemplo.com/nuevo/pagina.html
Redireccionar a usuarios que utilizan dispositivos móviles
RewriteEngine on # Para un directorio RewriteCond %{HTTP_USER_AGENT} iPad|iPhone RewriteCond %{REQUEST_URI} !^/Folder Name/ RewriteRule .* /Folder Name/ [R] # Para un subdominio RewriteCond %{HTTP_USER_AGENT} iPad|iPhone RewriteRule .* http://iphone.ejemplo.com/ [R] # Otros User-Agent RewriteCond %{HTTP_USER_AGENT} Android|Blackberry|iPad|iPhone|ipod|iemobile|opera\ mobile|palmos|webos|googlebot-mobile
Buenas prácticas
Lo primero es observar como funciona la antigua web, ver si sigue algún patrón en común que podamos aplicar mediante reglas en el archivo htaccess. Un ejemplo sería la típica web que simplemente usa archivos HTML y nuestra tarea es migrarla a WordPress conservando el contenido de las secciones:
Tenemos la sección de moda y la de temporada de una web que su URL es la siguiente:
http://ejemplo.com/moda_invierno.html
http://ejemplo.com/temporada-2015.html
En WP vamos a crear la misma sección, que nos dará como consecuente la URL:
http://ejemplo.com/moda-invierno/
http://ejemplo.com/temporada-2015/
Podemos observar que no sigue ningún patrón en concreto, por lo que por cada una de las URL viejas tendríamos que crear una instrucción en el archivo htaccess con la siguiente estructura:
Redirect 301 /moda_invierno.html http://ejemplo.com/moda-invierno/ Redirect 301 /temporada-2015.html http://ejemplo.com/temporada-2015/
Hola Adrian, gracias por los consejos, pero al aplicar este tipo de re-direccion en mi sitio usando SSL me arroja un error en los informes de WooRank
RewriteEngine On
RewriteBase /
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]
Lo dejo de esta manera y me indica posterior este error: «Error! La dirección web está accesible con y sin www!»
RewriteEngine On
RewriteBase /
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ https://www.domain.com/$1 [r=301,nc]
Tengo una confusion al respecto. Mi web esta en Bootstrap.
Agradezco tu ayuda y/o consejos.
soy nuevo en esto si me puede ayudar ,he dado de baja muchos productos de la web que al eliminarlos me dan errores como puedo solucionarlo para que se redirijan a la pagina principal muchas gracias
Hola estoy tratando de hacer un redirecionamiento de una url a otra pero no me funciona
Ejemplo: RedirectMatch 302 /pagina1/pagina2/pagina3/pagina4 https://www.prueba.com/prueba
Cuando hago el redireccionamientome trae la url de la siguiente manera
https://www.prueba.com/prueba/pagina2/pagina3/pagina4
y no me funciona
Que puedo hacer ¿?¿?¿?¿?