Un redirect 301 se refiere al código de estado HTTP que se devuelve cuando se redirige una petición http para un recurso en concreto. Echamos un vistazo aquí a la diferencia entre los códigos 301 y 302 para redirecciones y mostramos una manera fácil de implementar un redirect con código 301 usando de la directiva de virtual hosts de Apache.

301 vs 302 HTTP códigos estatus

Hay dos códigos de HTTP que se puede usar para indicar que una petición para un recurso en concreto se ha redirigido. El código 301 significa que una pagina (recurso) se ha movido a una ubicación nueva permanentemente. Este código de estado se puede usar para designar como las versiones canónicas bien a las versiones de http://www.servername.com o bien a las versiones de http://servername.com de las URLs de tus paginas y esto te permite evitar el problema que tienen los motores de búsqueda cuando indexan varias URLs que apuntan el mismo contenido.

Por otro lado, un código de estado de 302 indica que un pagina se ha movido temporalmente a una ubicación nueva y por eso la fuente de la petición para la pagina (URL) se ve obligada a seguir comprobando la URL original en lugar de actualizar sus datos e ir directamente a la ubicación nueva en posteriores peticiones.

Definiciones de los virtual hosts de Apache

Lo que se puede ver abajo son las dos entradas de virtual host que pueden usarse para definir, en primer lugar, la versión canónica de tus paginas y en segundo, para configurar la forma de redirigir permanentemente otra versión (en este caso la de www). El número de versiones disponibles y sus nombres dependerá de cómo esté configurado el DNS para tus páginas. La configuración del primer virtual host es bastante sencilla, mientras que en la segunda el único cambio es el uso de la directiva de RedirectMatch.

<VirtualHost *:80>
  ServerName    servername.com
  DocumentRoot  /var/www/sites/servername.com/current
  <Directory /var/www/sites/servername.com/current
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  ServerName  www.servername.com
  RedirectMatch permanent ^/(.*) http://servername.com/$1
</VirtualHost>

Para verificar que la configuración funciona intenta acceder no solamente a la versión redirigida de la URL raíz de la página sino también a otras URLs que contengan uno o más niveles inferiores (sub-niveles) y a continuación comprueba en cada una que la respuesta del servidor (usando firebug o similares) contenga el estado 301; el cual debe ser 301 Moved Permanently o algo muy parecido.

Enlaces útiles

Matt Cutts - Discussing 302 Redirects

Google - 301 Redirects

SEO Book - .htaccess and 301 Redirects

Almacenado en: web

comentarios

No hay ningún comentario.