Redireccionar un dominio con PHP
La manera correcta de redireccionar un dominio o página web a una nueva ubicación, una nueva URL, es utilizando el código de estado HTTP 301.
¿Qué es el redireccionamiento 301?
El redireccionamiento 301 es el método más efectivo para preservar tu posicionamiento en los buscadores a la hora de redirigir o renombrar un dominio (o página web) a una nueva URL. El código 301 es interpretado como Movido Permanentemente (Moved Permanently) y de esta manera no sólo se informa a los agentes de usuario (navegadores, etc) de la nueva ubicación sino que ésto también nos permite notificar o informar a los motores de búsqueda de que la ubicacion del recurso en cuestión ha cambiado.
Los motores de búsqueda consideran que los dominios example.com y wwww.example.com son diferentes y que cada uno provee diferentes contenidos. Si bien en la práctica esto generalmente no ocurre, ya que por lo general uno juega limpio, un error puede llegar a hacer detectar a los motores de búsqueda que nuestro contenido es spam (spammindexing) lo que terminaría afectando seriamente el posicionamiento del sitio en cuestion.
Otra cosa que hay que tener en cuenta es que el hecho de no informar cual es nuestro dominio preferido a los motores de búsqueda conlleva a que éstos tengan que analizar nuestro contenido dos veces y, si bien en la práctica no se ve, esto también podría afectar el posicionamiento del dominio. En el peor de los casos los buscadores podrían detectar que estamos publicando contenidos duplicados (duplicate content) y penalizarnos por eso.
Si bien esto en la práctica por lo general no ocurre, ya que por lo general uno juega limpio, siempre es preferible prevenir que curar. Otra ventaja con respecto a este tema es que nos permite ahorramos recursos en el servidor donde hosteamos nuestro dominio (ancho de banda, procesamiento, etc.) así como también en los servidores de los buscadores.
Ejemplos:
En los siguientes ejemplos se indica cómo redireccionar "example.com" a "www.example.com" así como también como redireccionar un recurso (una página, una imagen, un mp3, etc.) a una nueva ubicación (evitando las cuestiones extras de lógica en PHP para que no se extienda demasiado):
Redireccionar "dominio.com" a "www.dominio.com" utilizando PHP:
<?php
// Redirect non-www to www.
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.example.com/');
exit;
?>
Redireccionar "dominio.com" a "www.dominio.com" mediante un archivo .htaccess:
<Directory "/path/to/document/root"> Order allow,deny Allow from all <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^example\.com [NC] RewriteRule .? http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule> </Directory>
Redireccionar un recurso con PHP, "http://www.example.com/faq.php" a "http://www.example.com/faq/":
<?php
// Redirect http://www.example.com/faq.php to http://www.example.com/faq/
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.example.com/faq/');
exit;
?>
Redireccionar un recurso mediante un archivo .htaccess, "http://www.example.com/faq.php" a "http://www.example.com/faq/":
<Directory "/path/to/document/root"> Order allow,deny Allow from all <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^faq.php$ /faq/ [R=301,L] </IfModule> </Directory>
Enlaces relacionados a este tema: