Redirecciones htaccess que deberías aprenderte de memoria Cambio de URL en sitios web

Apache

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|iemo­bile|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/

3 comentario

  1. 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.

  2. 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

Enviar un comentario