Aplicaciones Servidores web

Configurando .htaccess: Redirecciones

Iré publicando una serie de artículos acerca del archivo .htaccess. Este archivo es el archivo de configuración básico del servidor web Apache, aplicable a todos los directorios y subdirectorios donde se encuentre este archivo, es decir, que si un directorio padre contiene este archivo, la configuración se aplicará a todos los directorios hijos a menos que exista otro archivo .htaccess en uno de estos directorios hijos. De este modo podemos podemos tener varias webs en distintas carpetas y don distintas configuraciones en un mismo servidor.

Las posibilidades de este archivo son tremendas, pudiendo hacer desde cosas básicas como redirecciones hasta auténticas artimañas gracias al uso de expresiones regulares, pudiendo reescribir las URLs de nuestras páginas a nuestro antojo. Comenzaremos con algo básico como son las redirecciones, así que tranquilos, que en este caso no corréis el riesgo de estropear nada.

Antes de comenzar, debemos activar las directivas de redireccionamiento con la siguiente línea que debe ir antes de cualquier redirección:

RewriteEngine on

Imaginemos que por ejemplo tenemos un blog en wordpress cuya página de login se encuentra en mi-web.com/wp-login.php. Quizás estemos acostumbrados a Drupal, cuya página de login se encuentra en mi-web.com/user y puede que te pase como a mi, que has escrito infinidad de veces mi-web.com/user en wordpress por estar acostumbrado a Drupal. Pues sería interesante redirecionar mi-web.com/user a mi-web.com/wp-login.php. También puede que queramos redireccionar una URL a otra, es decir, de mi-web.com/url1 a mi-web.com/url2. Podemos hacer todo esto desde PHP pero es infinitamente más eficiente hacerle desde este archivo, antes de que se ejecute código PHP, minimizando el tiempo de respuesta y dejando que la caché de nuestra web (en caso de tenerla activa) haga su trabajo del mejor modo. Abrimos el archivo .htaccess que encontraremos en el directorio raíz de nuestra web y agregamos las siguientes líneas para el primer caso del que os hablaba:

Redirect 302 /user /wp-login.php

Para el segundo caso:

Redirect 301 /url2 /url1

Es decir, que primero va la URL destino y luego la origen. En este caso son URLs relativas a nuestra web, de ahí que no ponga el nombre de la página. Por supuesto, es posible redireccionar de una web a otra con por ejemplo:

Redirect 301 miotraweb.com/url2 /url1

¿Y qué significan los números 302 y 301?

Pues se trata sencillamente del tipo de redirección que queremos realizar, siendo 302 una redircción temporal y 301 una permanente que, aunque para nosotros es lo mismo, no lo es así para google. Si hacemos una redirección 302, los motores de búsqueda no almacenarán esta redirección puesto que estamos indicando que se trata de algo temporal (imaginad por ejemplo que por lo que sea, cambiamos el dominio de toda nuestra web temporalmente). Mediante la redirección 301 le decimos a los motores de búsqueda que es algo permanente, por lo que almacenarán dicha redirección, muy útil si cambiamos el dominio de nuestra web permanentemente y no queremos perder posiciones.

Otro caso típico es el de redireccionar nuestra web sin www a nuestra web con la www. Para los motores de búsqueda (al menos para Google) miweb.com y www.miweb.com son vistas como distintas webs, por lo que interpretarán dichas URLs como distintas webs y por lo tanto, el contenido será visto como contenido duplicado, haciéndonos perder posiciones. He aquí un ejemplo de cómo configurar este archivo para que nuestra web sea accesible solamente con www o solamente sin www. La decisión de cual de las dos formas hacerlo es vuestra, puesto que es indiferente para los motores de búsqueda, se trata solamente de una cuestión de estética.

Decir que los comentarios en este archivo se indican con el símbolo # al principio de cada línea, por lo que podéis copiar y pegar lo siguiente en vuestro archivo con tranquilidad puesto que los comentarios no son tenidos en cuenta y son solamente eso, comentarios:

# Eliminad el comentario de la siguiente línea si aún no habéis activado la directiva de redireccionamiento.
# RewriteEngine on
# Para redirigir siempre a CON el prefijo 'www.',
# (http://ejemplo.com/... será redireccionado a http://www.ejemplo.com/...)
# elimina el comentario de las dos siguientes líneas:
# RewriteCond %{HTTP_HOST} !^www. [NC]
# RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
#
# Para redirigir a todos tus usuarios a tu web SIN el prefijo 'www.',
# (http://www.ejemplo.com/... será redireccionado a http://ejemplo.com/...)
# elimina el comentario de las dos siguientes líneas:
# RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
# RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]

{HTTP_HOST} representa al nombre de nuestra web y {REQUEST_URI} a la URL. Poned [L,R=301], pues que si solamente ponemos [L=301], estaremos diciendo que se trata de la última redirección y que el resto de las existentes en el archivo no sean tenidas en cuenta.

En otros artículos explicaré expresiones regulares y otras cosillas más avanzadas.

EduZRO

<p>Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.</p>

No Comments

comment No comments yet

You can be first to leave a comment

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *