Migración gradual con PHP.
Resumen.
Para migrar un sitio Web recurrimos al todopoderoso archivo .htaccess, y si, es una gran forma de hacerlo válida para la inmensa mayoría (por no decir la totalidad) de los casos. Pero qué ocurre si no queremos migrar la Web completa y nos resulta arriesgado estar continuamente modificando el .htaccess, si queremos ir migrando por ejemplo, artículos concretos de nuestro blog cada X tiempo. De esto nos ocuparemos en este artículo dedicado a SEO.Artículo.
Migrar un sitio Web es una tarea que debemos planificar con mucho cuidado y estar muy seguro de lo que queremos hacer. La migración de un sitio Web tiene por objetivo conservar el posicionamiento adquirido por un dominio, del que nos vamos a deshacer y trasladarlo a un nuevo dominio que no tiene posicionamiento, o bien tiene un posicionamiento inferior al antiguo dominio. Las circunstancias en que nos podemos encontrar ante la migración pueden ser muy variables, por ejemplo:
Migrar un sitio Web completo con idéntica estructura.- Nada cambia, todo es igual salvo el nombre de dominio.
Migrar un sitio Web con algunas modificaciones en su estructura.- El contenido es idéntico, pero se han modificado los nombres de algunos directorios y URLs.
Migrar un sitio Web con estructura completamente diferente.- Aunque la temática es la misma, los contenidos son similares, no idénticos. No existe coincidencia entre los nombres de los directorios ni las URLs. El nuevo sitio Web tiene secciones nuevas que no existían en el anterior y elimina algunas secciones existentes en el sitio inicial.
Migrar un sitio Web por partes.- Es el mismo caso expuesto anteriormente, con la diferencia que ahora no vamos a migrar el sitio Web completo, dado que el nuevo sitio, no ha sido completado y lo que deseamos es ir migrando secciones concretas y urls concretas. Ambos sitios coexistirán, y a medida que en el nuevo sitio se agregan contenidos, el posicionamiento pasa de una URL concreta a otra URL concreta.
Sin duda alguna, el último caso es el más complejo, aunque alguien dirá, es igual que el caso 3, solo que se hará la migración a lo largo del tiempo, y si, en principio es así. Pero nos podemos encontrar con otro problema, las páginas dinámicas, como es el caso de esta misma página que lees ahora. La página articulo.php lee diferentes artículos en función de la variable pasada por URL, así que: ¿Cómo migramos unos artículos y no otros con PHP?
La respuesta es sencilla, si el valor de la variable pasada por URL es uno, la enviamos a una página del nuevo dominio, si es otro, la enviamos a otra, así de simple, solo necesitamos una estructura condicional que nos haga esto. Es la siguiente:
Vamos a diseccionar un poco este código: lo primero que vemos es $_SERVER['REQUEST_URI'], se trata de una variable global que nos permite recoger el nombre del archivo que se esta ejecutando, y se diferencia de $_SERVER['PHP_SELF'] en que esta ultima no captura las variables pasadas por URL que son precisas para realizar las acciones que deseamos.
Esta función ejecutada en una URL como https://www.dominio.es/articulo.php?titulo=programar-en-php nos daría como resultado: /articulo.php?titulo=programar-en-php. Entonces debemos separar el valor pasado por URL de lo demás, para lo que nos valemos de la función explode(), que usando un cierto carácter (o caracteres) nos permite crear un array. Dado que solo existe un igual “=”, lo tomamos como elemento separador para obtener un array con dos elementos, y nos quedamos con el segundo elemento (key 1 [1]), que es el valor de la variable pasada por URL.
Con esto, aplicamos la estructura condicional switch() y un case para cada direccionamiento que queramos hacer.
Guardamos la URL de destino en la variable $Enviar y mediante header ejecutamos el direccionamiento. El código 301 indicará a los motores de búsqueda que es un direccionamiento permanente.
Por ultimo indicar que, obviamente, este código lo tendríamos que incluir en la página articulo.php, y la manera mas cómoda seria cargarlo mediante un include(), así cuando tuviéramos que ampliar los direccionamientos, no tendríamos que modificar la página articulo.php.
Pero podríamos ir mas allá, si tuviéramos un blog de gran extensión, cientos de publicaciones, podríamos generar este código desde una consulta a base de datos, solo tendríamos que agregar a la tabla un campo para indicar la nueva URL a la que direccionaremos y por supuesto, un campo condicional, que nos permita seleccionar qué publicaciones direccionaremos o no.
¿Podemos hacer esto con .htaccess? Si, por supuesto, pero nos obliga a estar manipulando continuamente este archivo tan delicado y que un error puede traer consecuencias muy desagradables. Es una opción mas que tenemos, a criterio de cada programador queda considerar las ventajas o inconvenientes del uso de este método.
Migrar un sitio Web completo con idéntica estructura.- Nada cambia, todo es igual salvo el nombre de dominio.
Migrar un sitio Web con algunas modificaciones en su estructura.- El contenido es idéntico, pero se han modificado los nombres de algunos directorios y URLs.
Migrar un sitio Web con estructura completamente diferente.- Aunque la temática es la misma, los contenidos son similares, no idénticos. No existe coincidencia entre los nombres de los directorios ni las URLs. El nuevo sitio Web tiene secciones nuevas que no existían en el anterior y elimina algunas secciones existentes en el sitio inicial.
Migrar un sitio Web por partes.- Es el mismo caso expuesto anteriormente, con la diferencia que ahora no vamos a migrar el sitio Web completo, dado que el nuevo sitio, no ha sido completado y lo que deseamos es ir migrando secciones concretas y urls concretas. Ambos sitios coexistirán, y a medida que en el nuevo sitio se agregan contenidos, el posicionamiento pasa de una URL concreta a otra URL concreta.
Sin duda alguna, el último caso es el más complejo, aunque alguien dirá, es igual que el caso 3, solo que se hará la migración a lo largo del tiempo, y si, en principio es así. Pero nos podemos encontrar con otro problema, las páginas dinámicas, como es el caso de esta misma página que lees ahora. La página articulo.php lee diferentes artículos en función de la variable pasada por URL, así que: ¿Cómo migramos unos artículos y no otros con PHP?
La respuesta es sencilla, si el valor de la variable pasada por URL es uno, la enviamos a una página del nuevo dominio, si es otro, la enviamos a otra, así de simple, solo necesitamos una estructura condicional que nos haga esto. Es la siguiente:
<?php
// la URL que direccionaremos podria ser algo asi como:
// https://www.dominio.es/articulo.php?titulo=programar-en-php
$_Url = $_SERVER['REQUEST_URI']; // Capturamos la URL y las variables que pasan por ella
$_Art = explode('=', $_Url); // Creamos array
$Artic = $_Art[1]; // Segundo elemento del array
switch($Artic){
case $Artic == 'programar-en-php':
$Enviar = 'https://www.nuevodominio.es/articulo.php?titulo=nuevo-articulo-php';
header("Location: $Enviar",TRUE,301);
break;
case $Artic == 'tipos-variables':
$Enviar = 'https://www.nuevodominio.es/articulo.php?titulo=tipos-de-variables';
header("Location: $Enviar",TRUE,301);
break;
case $Artic == 'condicionales-php':
$Enviar = 'https://www.nuevodominio.es/articulo.php?titulo=estructuras-condicionales';
header("Location: $Enviar",TRUE,301);
break;
default:
break;
}
?>
Vamos a diseccionar un poco este código: lo primero que vemos es $_SERVER['REQUEST_URI'], se trata de una variable global que nos permite recoger el nombre del archivo que se esta ejecutando, y se diferencia de $_SERVER['PHP_SELF'] en que esta ultima no captura las variables pasadas por URL que son precisas para realizar las acciones que deseamos.
Esta función ejecutada en una URL como https://www.dominio.es/articulo.php?titulo=programar-en-php nos daría como resultado: /articulo.php?titulo=programar-en-php. Entonces debemos separar el valor pasado por URL de lo demás, para lo que nos valemos de la función explode(), que usando un cierto carácter (o caracteres) nos permite crear un array. Dado que solo existe un igual “=”, lo tomamos como elemento separador para obtener un array con dos elementos, y nos quedamos con el segundo elemento (key 1 [1]), que es el valor de la variable pasada por URL.
Con esto, aplicamos la estructura condicional switch() y un case para cada direccionamiento que queramos hacer.
case $Artic == 'programar-en-php':
$Enviar = 'https://www.nuevodominio.es/articulo.php?titulo=nuevo-articulo-php';
header("Location: $Enviar",TRUE,301);
break;
Guardamos la URL de destino en la variable $Enviar y mediante header ejecutamos el direccionamiento. El código 301 indicará a los motores de búsqueda que es un direccionamiento permanente.
Por ultimo indicar que, obviamente, este código lo tendríamos que incluir en la página articulo.php, y la manera mas cómoda seria cargarlo mediante un include(), así cuando tuviéramos que ampliar los direccionamientos, no tendríamos que modificar la página articulo.php.
Pero podríamos ir mas allá, si tuviéramos un blog de gran extensión, cientos de publicaciones, podríamos generar este código desde una consulta a base de datos, solo tendríamos que agregar a la tabla un campo para indicar la nueva URL a la que direccionaremos y por supuesto, un campo condicional, que nos permita seleccionar qué publicaciones direccionaremos o no.
¿Podemos hacer esto con .htaccess? Si, por supuesto, pero nos obliga a estar manipulando continuamente este archivo tan delicado y que un error puede traer consecuencias muy desagradables. Es una opción mas que tenemos, a criterio de cada programador queda considerar las ventajas o inconvenientes del uso de este método.
Tags: Migración || posicionamiento || SEO || .htaccess || header || switch