Cambiando de dominio con PHP

Después del reciente cambio de dominio había puesto un error 404 en el anterior, que apuntaba a esta nueva versión, pero investigando un poco descubrí una forma aún más efectiva para hacerlo: combinando un error 301 con PHP; y lo comparto por si a alguien puede servirle (o servirle de idea para hacer algo similar).

En principio, hay que tener en cuenta lo siguiente:

Un error 301 es un estado definido en el protocolo HTTP que indica que un recurso ha sido movido permanentemente del servidor a otro sitio; por lo cual al tratar de acceder a ese recurso, se nos redirecciona automáticamente a su nueva ubicación. Además, este estado indica a los buscadores la nueva ubicación del recurso.

Entonces, para empezar, teniendo el directorio original vacío, escribimos en el archivo .htaccess de la raíz del directorio lo siguiente:

ErrorDocument 404 /index.php

Esto hace que todos los enlaces no encontrados sean redirigidos al archivo index.php. Básicamente lo que necesitamos es que los los errores 404 sean “captados” por un archivo PHP; que puede ser cualquiera.

Después de eso, simplemente necesitamos crear ese archivo en PHP en la raíz del dominio incluyendo el siguiente código (al principio de todo):

<?php
$url = $_SERVER['REQUEST_URI'];
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://leo.indiesign.info$url" );
?>

Este código define una variable “url”, que incluirá toda la parte del URL ingresada después del dominio (por ejemplo, si el URL ingresado fuese “www.ldablog.com.ar/categorias/escuchando“, esta variable contendría el texto “/categorias/escuchando“.

El resto del código indica que el archivo al que se está accediendo ha sido movido permanentemente, y luego se indica el nuevo URL, en el que se incluye la variable “url” como parte de la redirección, lo que hace que si el URL ingresado fuese “www.ldablog.com.ar/categorias/escuchando“, el nuevo URL fuese “leo.indiesign.info/categorias/escuchando“.

Cabe aclarar que si el contenido de la variable “url” fuese nulo (por ejemplo accediendo a “www.ldablog.com.ar“, la redirección se haría simplemente al nuevo dominio indicado (parece algo obvio, pero para los principiantes no lo es tanto).

En fin, está claro que este ejemplo solo sirve cuando la estructura de archivos es la misma, y lo único que cambia es el dominio. Si la situación fuese diferente, habría que resolverla de otra forma; pero puede que se pueda tomar este código como ejemplo.

2 comentarios

  1. Si tienes acceso al .htaccess hay otra forma más sencilla. Coloca la siguiente línea en el archivo .htaccess de tu antiguo dominio (sustituir example.com por tu nuevo dominio):

    Redirect permanent / http://example.com/

    o bien

    Redirect 301 / http://example.com/

    Esto hará que cualquier solicitud a dominioviejo.com/loquesea se redirija a example.com/loquesea

    Saludos.

    Responder
  2. Je, mucho más simple… es que yo soy rebuscado ¬¬;

    Responder

Comentar este post