Redirección 301

Una redirección 301, también llamada redirección “301 Moved Permanently”, sirve para enviar el tráfico de forma permanente a una nueva URL.

En realidad, transmite al visitante de la URL antigua el mensaje de que debe sustituir su script o enlace por la URL nueva. Un ejemplo es un sitio web que lleva años funcionando en HTTP ( sin SSL ) y que ahora dispone de HTTPS ( con SSL ). La redirección 301 indica entonces al visitante de la URL antigua que el enlace debe cambiarse de http://www.theory7.net a https://www.theory7.net

Redirección 301 y SEO

Una redirección 301 es la redirección más favorable que puedes crear en lo que respecta al SEO. Le indicas correctamente al buscador que la URL que tú consideras antigua ya está disponible en una URL nueva.

Si hay backlinks u otros sitios web que enlazan a la URL antigua, el buscador, como Google o Bing, transferirá también correctamente a la URL nueva el valor que llega a la URL antigua.

Por eso siempre es muy importante crear una redirección 301 en las páginas 404, para conservar el valor SEO y mostrar siempre a los visitantes un buen contenido en la URL correcta. Por tanto, nunca retires páginas sin más: retíralas y crea una redirección 301 a otra página o a contenido relevante.

Métodos de redirección 301

Una redirección 301 se puede crear de varias maneras. El método más fácil para ti depende del paquete de hosting o del servidor. A continuación repasamos los más habituales:

  • Redirección 301 mediante una regla en .htaccess
  • Redirección 301 mediante mod_rewrite en .htaccess o en el Vhost de Apache
  • Redirección 301 mediante un script PHP
  • Redirección 301 mediante Nginx

Redirección 301 mediante una regla en .htaccess

Una redirección 301 se puede crear en el llamado archivo .htaccess. Este archivo empieza realmente por un punto y debe colocarse en la carpeta donde también están los archivos de tu sitio web. Esa carpeta suele llamarse public_html, public o static. Esto varía según el paquete de hosting o el servidor.

Ejemplo de redirección 301 mediante .htaccess

Redirect 301 /pad/naar/oude/url https://www.theory7.net/pad/naar/nieuwe/url  **Otro ejemplo:**  Redirect 301 /oude-pagina https://www.theory7.net/nieuwe-pagina 

Redirección 301 mediante mod_rewrite

Este método mediante mod_rewrite es muy utilizado y también se usa a menudo en el archivo .htaccess. Puedes reconocer este método de redirección 301, y verlo con frecuencia, cuando se envía a visitantes o buscadores de un sitio web antiguo (nombre de dominio) a un sitio web nuevo (nombre de dominio).

También se usa mucho para obligar a todo el mundo a pasar de http:// a https:// y garantizar así que todos usen la conexión segura.

¿Qué es mod_rewrite?

Mod_rewrite es un módulo que se carga en Apache. Apache es el software que lee tus scripts y archivos html y los convierte en una representación visual. Dicho brevemente, a partir del código html que has escrito crea un sitio web visible.

El módulo mod_rewrite es una opción o módulo adicional que se carga y con el que puedes indicarle a Apache que debe redirigir unas URL a otras URL nuevas. Como esto ocurre en Apache durante el procesamiento de tu código html, ¡también es muy rápido!

Ejemplo de redirección 301 mediante mod_rewrite

RewriteEngine On rewritecond %{http_host} ^theory7.net rewriteRule ^(.*) http://www.theory7.net/$1 [R=301,L] 

Con este ejemplo enviamos a todos los visitantes que entran en nuestro sitio web mediante http://theory7.net, es decir, sin www delante, a la versión con www delante, en concreto http://www.theory7.net .

Ejemplo de redirección 301 para forzar SSL con mod_rewrite

RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https SetEnvIf X-Forwarded-Proto "https" HTTPS=on RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

En este ejemplo le indicamos a mod_rewrite que, si la URL que visitamos se abre por http:// (es decir, sin SSL), queremos enviarla a https:// (es decir, con SSL) y que queremos hacerlo mediante una redirección 301.

En cuanto uses esta redirección 301, cada visitante será enviado obligatoriamente a un enlace SSL https:// y, a partir de ese momento, siempre se verá un candado en tu barra de direcciones.

Redirección 301 mediante PHP (función header)

También es posible crear una redirección 301 en PHP. Es la variante que menos recomiendo, porque Apache y PHP primero tienen que leer y ejecutar el script que has escrito y solo entonces redirigen mediante una redirección 301. Por tanto, es bastante más lento que hacerlo mediante .htaccess o mod_rewrite.

Ejemplo de redirección 301 mediante la función header de PHP

<?php //Primero abrimos el código PHP con <php //Después abrimos la función header e indicamos el código de estado HTTP, en concreto 301 moved permanently ///Después indicamos la nueva URL mediante Location header( "Status: 301 Moved Permanently" ); header( "Location: https://www.theory7.net/nieuwe-url" ); exit(); ?> 

Con el código anterior envías a alguien mediante PHP, de forma sencilla, a una nueva URL. Por supuesto, puedes adaptarlo por completo a tu gusto.

Las líneas // son solo una explicación. PHP no hace nada con ellas, así que también puedes quitarlas cuando uses el código.

Redirección 301 mediante NGINX

Es posible que tu proveedor de alojamiento web use NGINX en lugar de Apache. Es otro tipo de software, que funciona de forma algo distinta a Apache y que suele estar más orientado a un mayor rendimiento y necesitar menos potencia de cálculo.

Por desgracia, NGINX no tiene .htaccess ni mod_rewrite, así que con esos métodos no puedes crear una redirección 301 en NGINX. Con PHP sí se puede, pero existe otra posibilidad: la configuración de NGINX.

En la configuración del vhost de NGINX puedes crear redirecciones 301 para distintos fines. A continuación pongo algunos ejemplos que quizá te sirvan:

Redirección 301 a un nuevo dominio mediante NGINX

server {   server_name oudedomeinnaam.net;  rewrite ^/(.*)$ http://nieuwedomeinnaam.net/$1 permanent;  } 

En este ejemplo creas un objeto server en la configuración de NGINX. En ese objeto indicas en server_name el nombre de dominio antiguo. Esto significa que el objeto de la configuración de nginx se activa en cuanto navegas a oudedomeinnaam.net.

En este caso, debajo hay una regla rewrite. En ella indicamos que, si navegas a oudedomeinnaam.net, debes ser enviado a nieuwedomeinnaam.net. ¡Esto se hace mediante una redirección 301!

Redirección 301 de una página antigua a una página nueva en NGINX

server {   server_name theory7.net www.theory7.net;   rewrite ^/oude-pagina$ /nieuwe-pagina.html permanent;   }  

Para crear una redirección 301 de la URL de una página antigua a la URL de una página nueva necesitas otro código. Arriba volvemos a crear un objeto server en la configuración de NGINX.

En server_name configuramos los nombres de dominio theory7.net y www.theory7.net. Esto significa que este objeto se activa en cuanto visitamos uno de estos nombres de dominio en la barra de direcciones.

A continuación ves una regla de redirección con la que decimos que /oude-pagina ( y todo lo que venga detrás) debe enviarse a /nieuwe-pagina.html. ¡Así redirigimos fácilmente una página concreta mediante una redirección 301 en NGINX!