Requêtes SQL pour changer de nom de domaine un site WordPress

WordPress est un outil de création de site web populaire. Dans le cycle de vie d’un site il est possible de changer de nom de domaine. Effectuer un tel changement sur un site WordPress nécessite de modifier les informations de la base de données car l’URL du site est écrite en dur à plusieurs endroits dans cette base de données.

Logo WordPress

Logo WordPress

Attention : ces requêtes sont effectives pour la version 3.5 de WordPress, mais elles ne sont pas garanties à 100% pour les futures évolutions de WordPress. Il convient d’effectuer une sauvegarde (un backup) des tables WordPress avant de les utiliser aveuglement.

Information pratique : par défaut le préfixe des tables WordPress est « wp_ » mais ce préfixe peut être modifié lors de l’installation, notamment par mesure de sécurité. Dès lors, il convient d’adapter les requêtes suivantes avec le bon préfixe.

Changer l’URL du site (siteurl et home)

L’URL du site est enregistrée en base, dès lors cela pose problème lorsque le site est migré sur un autre nom de domaine. Pour modifier l’URL il convient d’utiliser une requête SQL qui remplace l’ancienne URL en une nouvelle URL:

UPDATE wp_options
SET option_value = replace(option_value, 'http://www.ancien-site.com', 'http://www.nouveau-site.com')
WHERE option_name = 'home'
OR option_name = 'siteurl';

Changer l’URL des GUID (Global Unique Identifier)

Le GUID est un identifiant unique qui sert d’URL de référence pour les articles. C’est utilisé notamment par les lecteurs de flux RSS, afin de savoir si l’URL à déjà été visitée ou non. Si l’URL du site vous avez 2 possibilités:

  • Garder les mêmes GUID et tant pis si l’URL ne fonctionne plus
  • Changer l’URL des GUID vers le nouveau site, mais les lecteurs de flux RSS vont trouver de nouvelles URLs et considérer qu’il s’agit de nouveaux contenus. Cela peut ennuyer vos lecteurs qui vont se retrouver avec de nombreux anciens articles considéré comme du nouveau contenu.

Quoi qu’il en soit, voici la procédure pour changer les URL des GUID:

UPDATE wp_posts
SET guid = REPLACE (guid, 'http://www.ancien-site.fr', 'http://www.nouveau-site.fr');

Changer les URL des contenus des pages et articles (lien, image, document …)

Les URL contenus dans les pages et les articles d’un site WordPress sont écrit en absolu et non pas en relatif. Pour modifier l’URL il faut donc utiliser la requête suivante:

UPDATE wp_posts
SET post_content = REPLACE (post_content, 'http://www.ancien-site.fr', 'http://www.nouveau-site.fr');

Changer les URL des images uniquement

Dans la vie d’un site, il y a plusieurs raisons pour changer l’URL des images:

  • Charger les images sur un CDN spécifique, particulièrement pour améliorer les performances d’un site
  • Héberger les images sur le cloud computing, tel le cloud d’Amazon

La requête pour modifier les URL des images dans les articles est la suivante:

UPDATE wp_posts
SET post_content = REPLACE (post_content, 'src="http://www.ancien-site.fr', 'src="http://cdn.nouveau-site.fr');

Et pour modifier le guid uniquement des images il faut utiliser cette requête:

UPDATE wp_posts
SET guid = REPLACE (guid, 'http://www.ancien-site.fr', 'http://cdn.nouveau-site.fr')
WHERE post_type = 'attachment';

Changer les URL des données meta des posts

Lorsqu’un site change d’URL il est pratique de pouvoir mettre à jour les URL des données meta avec la requête SQL suivante:

UPDATE wp_postmeta
SET meta_value = REPLACE (meta_value, 'http://www.ancien-site.com','http://www.nouveau-site.com');

Résumé (toutes les requêtes)

Pour résumé, voici toutes les requêtes SQL à effectuer pour migrer un site WordPress d’un domaine vers un autre.

# Changer l'URL du site
UPDATE wp_options
SET option_value = replace(option_value, 'http://www.ancien-site.com', 'http://www.nouveau-site.com')
WHERE option_name = 'home'
OR option_name = 'siteurl';

# Changer l'URL des GUID
UPDATE wp_posts
SET guid = REPLACE (guid, 'http://www.ancien-site.fr', 'http://www.nouveau-site.fr');

# Changer l'URL des médias dans les articles et pages
UPDATE wp_posts
SET post_content = REPLACE (post_content, 'http://www.ancien-site.fr', 'http://www.nouveau-site.fr');

# Changer l'URL des données meta
UPDATE wp_postmeta
SET meta_value = REPLACE (meta_value, 'http://www.ancien-site.com','http://www.nouveau-site.com');

Vérifier que l’ancienne URL n’existe plus

Pour s’assurer que le changement d’URL est réussi il convient de faire une recherche de l’ancienne URL sur l’ensemble des tables de la base de données. Si l’ancienne URL est encore présente, il suffit de modifier manuellement les quelques données récalcitrantes pour finaliser le changement d’URL.

Autres requêtes

Cette liste contient déjà plusieurs requêtes plus ou moins indispensables pour migrer un site sur un autre nom de domaine. Si vous en connaissez d’autres n’hésitez pas à les partager dans les commentaires de cet article.

Ce contenu a été publié dans WordPress.

A propos de l'auteur : Tony Archambeau

Fort de plusieurs années d’expérience dans le développement web, Tony partage ses connaissances sur des projets divers dont le site infowebmaster.fr.
Il est possible de le suivre sur Twitter.

Partager

14 réflexions au sujet de « Requêtes SQL pour changer de nom de domaine un site WordPress »

  1. Très bon article Tony. Merci.
    Je te confirme que cette méthode fonctionne encore avec la 3.6 de WordPress.
    Je découvre ton site aujourd’hui. Tu fais désormais partie de mes flux.

  2. Tony Archambeau dit :

    @Grégoire : merci, ça fait plaisir. :)

  3. Bonjour Tony,

    Merci pour cet article! Suite à plusieurs migration de nom de domaine dans wordpress et les structure de sauvegarde différentes j’ai créer un script PHP qui permet de d’automitisé le changement de nom de domaine dans la base de données en mettant à jour tous les champs.

    Si tu as une chance essaye-le et donne-moi tes commentaires.

    http://www.francisparent.com/changer-nom-domaine-dun-site-web-utilisant-wordpress/

    Bonne migration!

  4. JB dit :

    Un grand merci pour tes requêtes qui m’ont permis de « récupérer » l’administration de mon blog après une fausse manip sur le nom du site (impossible de se reconnecter par la suite à cause des redirections).
    Encore merci.
    JB

  5. Dugland dit :

    Sinon un export de la base en fichier texte (ça permet au passage de backup) et un « remplacer par » du vieux nom par le nouveau. Ensuite un import sur la nouvelle base.

  6. sam dit :

    Bonjour !
    s’il vous plait je suis novice dans ce domaine et la je dois migrer mon blog sur un nouveau domaine ! c’est quoi exactement executer une requete sql ? ou je dois aller exactement pour inserer ces 4 requetes ? est ce que je dois les inserer ans ma base de donnee actuelles ?
    Je vous remercie infiniment !

  7. webagadir dit :

    merci beaucoup pour cet article, sachant que j’ai beaucoup souffert afin de migrer mon site de localhost en hébergeur, je ne savais pas comment changer les liens http://localhost/page en http://site.com/page en utilisant les requêtes Sql.

  8. Sabine dit :

    Bonjour

    J’ai essayé de rajouter l.extension .com a mon site …. J’ai du m….

    Je ne plus avoir accès à mon site… Le site est il détruit ???
    Panique à bord y a t il qqun qui puisse sauver une jeune fille en détresse :-(
    Merci
    Sabine

  9. Thierry dit :

    Dugland dit :
    10 décembre 2013 à 4 h 18 min
    Sinon un export de la base en fichier texte (ça permet au passage de backup) et un « remplacer par » du vieux nom par le nouveau. Ensuite un import sur la nouvelle base.

    C’est ce que je fais et ça me simple beaucoup plus simple que les requêtes SQL. Et aucun risque d’oublier une ancienne URL !

  10. kareem dit :

    Bonjour à tous!
    En fait j’ai un problème avec le nom de domaine de mon blog, je voulais changer le nom de domaine, mais ça n’a pas marché et là je suis bloquer et je ne sais plus même récupérer l’ancien de domaine.
    Donc je ne sais plus accéder à mon blog svp si quelqu’un peut m’aider à résoudre ce problème.

    Merci

  11. Ben Cousin dit :

    Bonjour,
    Merci de ces requêtes « prêtes à l’emploi », c’est parfait !
    Juste une petite coquille, dans le résumé des 4 reqs, on a parfois mon-site.fr et parfois mon-site.com, il faudrait uniformiser, cela pourrait en perdre certains !
    Sinon, encore bravo !

  12. david dit :

    Très bon article Tony. Merci

  13. AudreyG dit :

    Bonjour,

    j’ai voulu déplacer mon site W qui se trouve sous un alias sous le nom de domaine d’origine. J’ai effectué les requêtes que vous donnez avec succès, mais quand je lance le site, les pages sont vides de contenu, même si la mise en page est toujours là (entête/menu/…).
    A savoir que j’utilise le plugin (Page Builder pour construire mes pages)…
    Du coup, j’ai réimporté ma sauvegarde de base de données et j’ai remis sous l’alias de départ. Ouf ça marche à nouveau… mais c’est le retour à la case départ, mon site n’est toujours pas au bon endroit…
    Y a-t-il d’autres requêtes à faire pour que je ne perde pas le contenu de mes pages?
    Merci de me répondre vite, j’arrive en fin de stage et je dois mettre le site de l’entreprise en ligne…

  14. Stéphane dit :

    Bonjour,

    Super article ! Ces requêtes permettent une migration sans problème contrairement à la méthode qui consiste à éditer le fichier sql dans un éditeur texte avec la fonction « remplacer tout ». Les paramètres des thèmes et modules sont ainsi conservés, Merci !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *