¿Cómo puedo crear una redirección 301?

Una redirección 301 transfiere el código de estado HTTP 301 de un servidor web al solicitante, como pueden ser Google Bot o un usuario, y por lo tanto indica que el recurso solicitado (por ejemplo, una URL) se ha movido permanentemente y ahora se puede encontrar ese contenido bajo una nueva URL.

Una redirección 301 puede ser creada fácilmente mediante PHP o el archivo .htaccess y el módulo «mod_rewrite» necesario del servidor web Apache – esto también se aplica a Nginx.

Crear una redirección 301 en PHP

Si se desea establecer una redirección 301 mediante PHP, el documento fuente debe ser un archivo PHP. Si se cumple este requisito, el código PHP para la redirección 301 se escribe directamente en el documento al que se redirige.

Agregaríamos el siguiente código fuente en la primera línea del documento al que debe redirigirse:

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.domain.com/nuevo-nombre.php");
header("Connection: close");
?>

Función: Al pegar el código anterior dentro del archivo “nombre-viejo.php”, el cual puede ser localizado en “domain.com/nombre-viejo.php”, todas las visitas serán redirigidas a la nueva dirección “domain.com/nombre-nuevo.php“ (línea 3) y se devolverá el código de estado HTTP 301, indicando que fue movido permanente.

Crear una redirección 301 a través del .htaccess

Si deseas crear una redirección 301 a través del archivo .htaccess, necesitarás un servidor web Apache y activar el módulo «mod_rewrite». Ten en cuenta que Apache es uno de los servidores web más populares y casi todos los grandes proveedores de alojamiento web lo utilizan. Además, en muchos casos el módulo «mod_rewrite» suele estar activado. El archivo .htaccess viene incluido por defecto en la mayoría de los paquetes de alojamiento web.

Pega el siguiente código fuente en el archivo .htaccess:

RewriteEngine On
RewriteRule  ^vz/dokumento.html  https://www.dominio.es/dokumento.html  [R=301]

Función: Al utilizar el comando «RewriteEnginge On», se activa el módulo «mod_rewrite» del servidor web Apache. La segunda línea de código comienza con la instrucción «RewriteRule» y establece la ruta en la que se debe realizar la redirección para el documento o documentos siguientes.

Separado por un espacio en blanco, se escribe la URL de destino, a la cual se desea redirigir tanto al bot de Google como al usuario, en la misma línea.

En nuestro ejemplo, el archivo «dokumento.html» ya no se encuentra en la carpeta «/vz/», sino un nivel más arriba bajo el nombre de dominio.

Por último, se escribe entre corchetes el código de estado HTTP que el servidor debe utilizar para esta redirección. Es importante definir el código de estado como 301, ya que Apache utiliza por defecto el código de estado 302.

Crear un redirección 301 con NGINX

Junto con Apache, Nginx es el segundo servidor web más utilizado. Aquí, las instrucciones no se enumeran en un archivo separado, sino que se colocan directamente en «nginx.conf».

Agregaremos el siguiente código fuente a su archivo «nginx.conf», ya sea en el bloque de servidor existente o en uno nuevo:

rewrite ^/vz/dokument.html $scheme://$host/dokument.html permanent;

Función: La primera línea de código comienza con la instrucción «rewrite» y establece la ruta en la que se realizará la redirección para el documento siguiente.

Aquí también, después de un espacio en blanco, se enumera la URL de destino. Nginx se encarga automáticamente de determinar si se trata de HTTP o HTTPS gracias a la variable «$scheme» y se introduce el host correspondiente con «$host».

La instrucción «permanent» asegura que la redirección utilice el código de estado 301.

Envío a gran escala con expresiones regulares

Si deseas redirigir todos los documentos y subdirectorios, también puedes trabajar con expresiones regulares.

rewrite ^/vz/(.*)$ $scheme://$host/$1 permanent;

Con este texto todos los documentos en el directorio /vz/ serían redirigidos al directorio raíz. Es decir, «dominio.es/vz/documento2.html» sería redirigido a «dominio.es/documento2.html» y «dominio.es/vz/directorio2/documento3.html» terminaría en «dominio.es/ directorio2/documento3.html».

Crear un redirección 301 con Lighttpd o Microsoft Internet Information Services (IIS)

Crear una redirección 301 en otros servidores Web, como Lighttpd o el IIS, no es algo muy difícil para usuarios sin experiencia.

Explicación en video por Matt Cutts / Google respecto a este tema

¿Existe un límite sobre cuántas redirecciones 301 (permanentes) puedo realizar en un sitio?

¿Existe un límite sobre cuántas redirecciones 301 (permanentes) puedo realizar en un sitio? ¿Qué hay acerca de cuántas redirecciones puedo hacer en secuencias?

Información Adicional sobre este tema: