> Manuales > Editar htaccess para crear direcciones URL amigables

Aprende a realizar redirección tipo 301 (moved permanently) de una URL antigua a una nueva, utilizando el fichero .htaccess y la instrucción redirect y redirectMatch.

A veces nos vemos en la necesidad de cambiar las direcciones de nuestras páginas, porque hayamos realizado una reestructuración del sitio, una reprogramación o un cambio de dominio. No cabe duda que esto siempre es un engorro, lo mejor sería conservar las direcciones antiguas, que las conocen nuestros usuarios y están correctamente posicionadas en buscadores, pero en ocasiones no tenemos más remedio.

En esos casos, lo más adecuado es facilitar tanto a usuarios como motores de búsqueda la localización de las nuevas URLs que sustituyen a las viejas. Existen varias maneras de hacer esto, unas más adecuadas que otras, pero parece ser que, de cara a buscadores como Google, lo más adecuado es realizar una redirección 301 "moved permanently". Así les estamos informando que los contenidos han cambiado de localización permanentemente, de modo que los motores de búsqueda actualizarán las direcciones en sus bases de datos. De cara a los usuarios, con una redirección 301 sus navegadores cambiarán las URL por las nuevas de manera transparente para los usuarios, es decir, sin que tengan que hacer nada.

En este artículo veremos cómo realizar una redirección 301 ayudándonos del archivo .htaccess de Apache. Usaremos dos instrucciones distintas para conseguir nuestros objetivos, con ejemplos para cada una de ellas:

Referencia: Tenemos algunas informaciones sobre .htaccess en DesarrolloWeb.com.

Editar htaccess para crear direcciones amigables
http://www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html

Manual de Apache
http://www.desarrolloweb.com/manuales/41/

Instrucción redirect

Realizar una redirección 301 con htaccess es muy simple. Se puede hacer con una línea como esta en el archivo:

redirect 301 /url_antigua.html http://www.dominio-nuevo.com/url-nueva/

Como se ha visto, se lanza un comando redirect, tipo 301 y luego se indican tanto la url antigua como la nueva. La antigua simplemente se indica con la URL relativa al archivo .htaccess. La nueva URL se indica de manera absoluta, comenzando con http://.

Nota: Ten en cuenta que el proceso de redirección cambiará la URL de la barra de direcciones del navegador. Por lo tanto, el usuario percibirá que el navegador le ha llevado a una URL distinta de la que había escrito. Por el cacheo de redirecciones 301, esa URL nueva será permanentemente memorizada en el navegador, realizando esa redirección siempre que se acceda a la dirección antigua.

En el caso del buscador, percibirá que la redirección es 301 y por tanto permanente. Ello quiere decir que el buscador hará una transferencia del ranking de la URL antigua a la nueva y descartará la URL antigua de su base de datos.

Instrucción redirectMatch

También podemos hacer redirecciones en masa más complejas utilizando patrones. Si los patrones concuerdan, entonces se realiza la redirección.

Por ejemplo, si queremos que cualquier URL de un dominio se redirija a la portada o página raíz de otro dominio, podremos hacer esto:

redirectMatch 301 ^(.*)$ http://www.desarrolloweb.com

Esto, en un dominio llamado por ejemplo domantiguio.com, redireccionaría cualquier URL como http://domantiguo.com/loquesea/ a la URL http://www.desarrolloweb.com. O bien una URL como http://domantiguo.com/dir/otracosa.html se redirigiría a http://www.desarrolloweb.com.

Ahora, si deseamos hacer una redirección de una URL de un dominio a la misma URL, pero en otro dominio, podríamos hacer algo como esto:

redirectMatch 301 ^(.*)$ http://www.desarrolloweb.com$1

Esto redirigiría algo como http://domantiguo.com/loquesea/ a la URL http://www.desarrolloweb.com/loquesea. Una URL como http://domantiguo.com/dir/otracosa.html la redirigiría a http://www.desarrolloweb.com/dir/otracosa.html.

Redirecciones 301 y 302

Recuerda que las redirecciones 301 siempre son permanentes, por lo tanto, no deberías usarlas si no estás seguro que ésta pueda sea definitiva.

Si tu redirección puede ser solo temporal, usa el código 302. La sintaxis de las instrucciones redirect o redirectMatch son las mismas, solo cambiaría el código 301 o 302 dependiendo de si es definitiva o temporal.

Si tu redirección puede llevar a una URL unas veces y otras veces a otra, entonces es temporal y debes usar 302.

Esperamos que esta información te haya resultado de utilidad. Recuerda que tienes un manual completo para sacar partido de otras utilidades del archivo .htaccess.

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online Escu...

Manual