Miércoles ~ Abril 18, 2007

Cambiar enlaces al cambiar de dominio

Hoy he recibido un mail de Miguel de EntreGeek (antes BlogR.info), y me comentaba que había cambiado de dominio y que quería volver a cargar la base de datos para disfrutar de los posts y comentarios ya almacenados en el antiguo dominio. Hacer esto es realmente sencillo, ya que mediante herramientas como phpMyAdmin esta tarea es realmente sencilla.

El problema radica en que los enlaces almacenados en la base de datos apunten al servidor antiguo, lo que supone un problema para la consolidación del nuevo servidor ya que los usuarios son redirigidos al  antiguo servidor. Para ello podemos hacer uso de una función de SQL que nos permite reemplazar valores almacenados dentro de los campos de nuestra base de datos.

update wp_posts set post_content = replace(post_content,'http://www.antiguo.com','http://www.nuevo.com');

En este ejemplo, vemos que de la tabla wp_posts cambiaremos el contenido de post_content, que es el campo de la tabla que contiene el contenido de los posts, con el mismo contenido al que previamente le habremos cambiado todas las apariciones de http://www.antiguo.com  por la ruta http://www.nuevo.com. Si queremos cambiar los enlaces a posts encontrados en los comentarios, tendremos que hacer exactamente lo mismo pero cambiando los datos referentes a la tabla y columna afecta con los relacionados con los comentarios.

Esta propiedad de SQL es muy potente, por lo que es importante usarla con cuidado y hacer que la busqueda ser correcta ya que podemos ocasionar un destrozo en algo muy, pero que muy delicado, nuestra base de datos. Por este motivo, antes de hacer ninguna modificación  HAZ UNA COPIA DE SEGURIDAD y asegurate de que el patrón que buscas no sea muy general ya que podría cambiar valores que no deberían ser cambiados.

Actualizo

Al leer los comentarios, he visto que se ha optado por usar htaccess, y realmente es una buena opcíon ya que el  resultado es el deseado, aunque no es práctico a la larga ya que nos obligaría a arrastrar dichos cambios a lo largo de todos nuestros servidores,… que por desgracia nunca es solo uno…. en mi caso voy camino al 3ro.

Otra opción que se baraja es la de reemplazar el fichero SQL directamente desde un editor de texto y subirlo ya modificado, en esencia es la misma tarea y si tienes linux, con los comandos correctos la forma más fácil. El problema que yo he tenido cuando he intentado hacer esto, es la gran cantidad de líneas de los SQL lo que hace casi inmanejable el fichero en cualquier editor, yo mismo con 2300 posts podría colgar el equipo o como mínimo me daría tiempo a pasarme algún juego de la DS antes de que pudiera reaccionar. Si tienes poco posts o un buen equipo es una opción tan buena como la anterior.

Por otro lado quizas he sido demasiado escueto en la explicación del proceso anterior. Para que el uso del replace funcione en nuestra BD tendremos que lanzar dicha petición SQL desde la etiqueta SQL del phpMyAdmin. Repito y no me cansaré, que más vale perder 10 min en hacer una copia de seguridad que llorar despues de haber perdido todo.

Gracias a magarto por sus explicaciones y a goa por la idea de edición del fichero.

Quizas te pueda interesar

25 Responses to “Cambiar enlaces al cambiar de dominio

Pingback

Comentarios

1

Muchas gracias Andrés, como siempre. Si cuando cambié de servidor de Dreamhost hubiese sabido esto, me habría ahorrado mucho tiempo

# magarto -- 18/04/07 - 10:26 pm Responder
2

Muchas gracias por currartelo así Andrés! No entiendo muy bien que tengo que hacer con esa función que has dejado. Una vez dentro de la tabla wp_post que hago?

# Miguel -- 18/04/07 - 10:32 pm Responder
3

Miguel, supongo que tendrás que meterte en tu base de datos mediante terminal y hacerlo, o mediante PHPMyadmin y ejecutar esa acción

# magarto -- 18/04/07 - 10:38 pm Responder
4

Por cierto Andrés, hace tiempo me dijiste por mail que ibas a crear un artículo sobre el plugin que tenías en Wordpress de: Hay X artículos y Y comentarios desde que entraste la última vez”. Si puedes y te apetece te animo ;)

# magarto -- 18/04/07 - 10:40 pm Responder
5

El problema es que no se donde hay que poner la acción para ejecutarla…

# Miguel -- 18/04/07 - 10:47 pm Responder
6

Espera que miro en my servidor

# magarto -- 18/04/07 - 11:14 pm Responder
7

Pasos:
- Haces un backup
- Te metes en la base de datos, seleccionándola en la izquierda en PHPmyadmin
- Arriba seleccionas SQL
- Insertas el código modificándolo a tu interés y lo ejecutas
;)

# magarto -- 18/04/07 - 11:18 pm Responder
8

No he tenido que hacer nada de esto, tan solo he substituido el .htaccess por uno nuevo con esto:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^nuevaurl.com$ [NC]
RewriteRule ^(.*)$ http://nuevaurl.com/1 [R=301,L]

Ya está todo solucionado!! Gracias Andrés por esta entrada, no hubiese encontrado la manera de solucionarlo! Mañana veré que tal las visitas…

# Miguel -- 18/04/07 - 11:18 pm Responder
9

Menos de dos horas para Ubuntu Feisty :D :D

# magarto -- 18/04/07 - 11:35 pm Responder
10

Creo que es una putada tener que modificar el .htacess, puesto que es algo que vas arrastrando. Te recomiendo ejecutar lo anterior

# magarto -- 18/04/07 - 11:37 pm Responder
11

Otra opción sería cambiar el nombre del dominio en el archivo .sql antes de importarlo de nuevo :p

# goa -- 18/04/07 - 11:50 pm Responder
12

Cierto

# magarto -- 18/04/07 - 11:52 pm Responder
13

Si a la larga no funciona bien lo que he hecho intentaré hacer de nuevo lo que explica Andrés.

De momento y en dos horas que lleva activo ya se ha notado muchísimo!

# Miguel -- 19/04/07 - 1:18 am Responder
14

Excelente por la explicacion, voy a guardarla por si algun dia me es necesaria ;)

# Alex -- 19/04/07 - 1:32 am Responder
15

ESTO DE VERDAD ES UTIL, EN UN CASO DE ESOS …
BUEN TRUCO.
ABRAZO VIRTUAL

# GUAGUAU -- 19/04/07 - 5:44 am Responder
16

Eso está bien para los posts y el contenido de ellos, pero si las imágenes se importan de la manera que incluye WP, siguen apuntando a la vieja ubicación.

Se os ocurre cambiarlo? Gracias Andrés ;)

# Javi Vicente -- 19/04/07 - 8:36 am Responder
17

#16 Javi, dependiendo del cambio que hagas puedes cambiar la ruta de las imagenes, si te fijas ahora mis imagenes se dirigen a upload.anieto2k.com, y lo he hecho con el replace.

Lo importante es que la url buscada sea lo más explicita posible.

# aNieto2k -- 19/04/07 - 9:03 am Responder
18

Si es para cambiar el contenido de los posts (enlaces, imágenes, etc.) existe un plugin muy sencillo que lo hace:

thedeadone.net/software/search-and-replace-wordpress-plugin/

Con un interfaz amigable para aquellos que se pierden con phpMyAdmin ;-)

# Fernando Serer -- 20/04/07 - 9:03 pm Responder
19

Yo creo que en linux, y gedit el cambio o remplazo de una ruta seria extremadamente facil, solo abres remplazar pones la la url antigua y a la cual vas a remplazar y listo ..”el cambio en mi maquina es casi instantaneo y apenas si consume recursos (356 entradas y otro tanto igual en comentarios)”
( este lo tengo bien comprobado )

ahora bien ..
se me antoja que tambien se pueda hacer en javascript .. yo tenia un script “cuando usaba blogger” que remplazaba texto por imagentes asi que posiblemente sea de la misma forma ..
( este la verdad no se si funcione )

# Abraham Tamayo -- 22/04/07 - 10:24 am Responder
20

Bueno, esto ya lleva un tiempo pero a ver si me pueden ayudar…

Yo tenía el blog en viciamos.com, en un servidor de dreamhost.

Manteniendo el dominio, cambié a otro servidor, pero también de dreamhost, asi que mantiene las dns.

Se supone que los enlaces son los mismos. Cuando entro en la web me la muestra perfecta, pero los enlaces no funcionan. La dirección es la correcta, pero da error 404.

Al princpio pensé que sería por la carpeta local. Es decir, antes estaba en /home/.merlyn/usuario y ahora estaba en /home/.tui/usuario asi que con la opción de reemplazar sustitui los .merlyn por .tui y aún así no me funciona…

alguna idea?

# Joan -- 06/02/08 - 1:54 am Responder
21

Vale. La cosa más estúpida del mundo entero.

La solución:

Vosotros cambiabais de dominio no? Pues yo como mantenía el mio lo único que he hecho ha sido poner una barra (/) al final del dominio en el panel de opciones. Ya funciona.

salu2

# Joan -- 06/02/08 - 1:59 am Responder

Deja un comentarioTop

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.

Esta web se encuentra sobre la licencia Creative Commons (Reconocimiento - Compartir igual) / Politicas de uso

Cerrar
Enviar por Correo