Categorie
MySQL PHP WordPress

Replace URL in caso di migrazione sito WordPress

Quando migriamo un nostro sito WordPress da un server ad un’altro (per esempio da locale ad hosting, o viceversa) dobbiamo, di norma, eseguire tre operazioni:

  1. Copiare fisicamente i files sul nuovo server (di solito con un client FTP).
  2. Eseguire un backup dell’intero database (con PHPMyAdmin per esempio) ed importarlo sul nuovo DB.
  3. Eseguire un replace di tutte le occorrenze dell’URL all’interno del DB nel caso che il dominio cambi (es. da http://localhost a http://www.miosito.com).

Tralasciando i primo due step (se avete bisogno di approfondimenti segnalatemelo nei commenti), concentriamoci sul terzo, che, anche se a prima vista il meno importante non è esente da problematiche.

Problema – search and replace

Ho visto su più di una guida suggerire l’utilizzo di un semplice editor di codice per eseguire la sostituzione del vecchio URL con il nuovo, all’interno del file SQL derivante dall’esportazione del DB (prima dell’importazione).
Bene anche se a prima vista questa tecnica possa sembrare efficace è invece particolarmente rischiosa.
Difatti essa non preserva l’integrità delle eventuali stringhe serializzate. Alcuni Temi o Widget salvano e conservano i dati (tra cui l’URL) in forma serializzata.
Un semplice replace della stringa potrebbe quindi comportare la loro rottura, visto che cambierà (molto probabilmente) la lunghezza della stringa ma non gli indici.
Anche un’eventuale replace direttamente con query SQL dopo l’importazione del DB non sarebbe esente da questo inconveniente:

UPDATE wp_options 
SET option_value = replace(option_value,'http://localhost','http://www.miosito.com')

Soluzione

Per garantire una sostituzione sicura basta utilizzare questo script: WORDPRESS (AND OTHERS) SEARCH AND REPLACE TOOL
safe search and replace
I passi da seguire sono semplici:

  1. Scaricare lo script.
  2. Rinominarlo per proteggersi da eventuali scanner automatici alla sua ricerca.
  3. Copiarlo sulla root di WordPress.
  4. Eseguire lo script es: ‘http://www.miosito.com/mio-rename-replace.php‘.
  5. Seguire la procedura guidata (semplice ed intuitiva che porta al replace della stringa desiderata nel DB).
  6. Cancellare lo script ad operazione conclusa (Importante).
  7. Naturalmente questo tool non è stato scritto per modificare l’URL di WordPress in caso di “trasloco” e cambio di dominio, ma lo possiamo e dobbiamo utilizzare per qualsiasi replace all’interno di WordPress, e non solo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.