Les déménagements sont les mouvances de l’existence. Ça bouleverse, ça empêche l’habitude _Louise Portal
Une problématique que l’on rencontre lorsque l’on souhaite changer l’URL de son WordPress : Comment déplacer en toute simplicité son site WordPress d’un nom de domaine à un autre ?
Vous déménagez ? Pensez à modifier votre base de données WordPress !
Déménager son site WordPress
On a parfois besoin de modifier l’URL de son domaine ou simplement d’en changer pour le rendre plus efficace ou pour mieux refléter l’orientation du blog.
Par exemple si vous avez, lors de votre installation WordPress, déclaré monsite.com/wordpress/ comme adresse de votre blog et cela ne vous plait pas… Vous souhaiteriez que votre blog s’affiche dès la racine sur monsite.com. Voici comment faire !
1/ Changer l’URL de monsite.com/wordpress/ en monsite.com
Si vous décidez de changer l’emplacement URL de votre blog WordPress en raison d’un changement de nom de domaine (http://www.ancien-domaine.com vers http://www.nouveau-domaine.com) ou pourquoi pas dans un sous-répertoire (https://www.domaine.com vers https://www.domaine.com/blog), il y a quelques mesures simples à prendre, pour s’assurer d’une migration correcte et de ne rompre aucun lien.
Pas besoin de tout réinstaller; un déplacement de dossier, quelques modifications de fichiers suffiront.
1.1 Modifier la configuration de WordPress
Dans le menu “Réglages>général”, changez les paramètres “Adresse web de WordPress” et “Adresse web du site”. Vous devez mettre la nouvelle adresse du site “monsite.com”, en principe vous passez donc de “monsite.com/wordpress/” pour les deux paramètres en “monsite.com”.
Enregistrez les modifications. Vous pouvez avoir, à partir de ce moment là, des erreurs type “fichier introuvable”, c’est sans importance.
1.2 Copier les fichiers “index.php” & “.htaccess”
Via FTP, vous devez à présent copier le fichier “index.php” et le fichier “.htaccess” depuis le dossier “WordPress” vers la racine de votre site. Nota: Si vous n’utilisez pas les pretty permalink, vous n’aurez peut être pas de fichier “.htaccess”.
1.3 Modifier votre “index.php”
Télécharger votre fichier “index.php” (pensez à faire une copie de sauvegarde) et modifier le dans votre éditeur de texte.
Vous devez modifier la ligne:
require('./wp-blog-header.php'); en require('./wordpress/wp-blog-header.php');
Sauvegardez et téléchargez à nouveau le fichier modifié en écrasant celui sur le FTP.
Voilà en 2 clics et 3 mouvements, l’opération déménagement est terminée!
A savoir
L’adresse d’accès à l’interface d’administration de WordPress n’a pas changée. C’est toujours une adresse de type “https://monsite.com/wordpress/wp-admin”. En revanche, l’adresse du site, elle, a changé pour “https://monsite.com”.
Attention, cette manipulation s’effectue à vos risques et périls, aucun support ne sera effectué ici… Cet article ne traite pas du déplacement d’un blog WordPress à partir d’un serveur ou hébergement vers un autre hébergeur… Pour cela consultez notre article Comment migrer facilement son site WordPress ? et profitez en pour passer votre WordPress en HTTPS.
2/ Déplacer WordPress vers un nouveau Nom de Domaine
Il existe 4 moyens de le faire : Via le changement dans l’administration de WordPress, via le fichier wp-config.php, via votre base de données ou avec un plugin
Ce qui doit être modifié ou pas
Avant toute chose et en préambule, n’oubliez surtout pas d’effectuer une sauvegarde complète de vos fichiers et de votre base de données.
La partie la plus délicate lors du déplacement d’un blog WordPress vers un autre emplacement, réside dans le fait que WordPress utilise les liens absolus en lieu et place de liens relatifs lorsqu’il stocke certains paramètres dans votre base de données. Dans les articles et les pages de votre blog lui-même, il y aura forcément des liens absolus (par exemple http://www.ancien-domaine.com/monarticle)
Toutes ces valeurs de la base de données devront être modifiées lors de la migration de votre WordPress. Cet article vous montrera quels sont les champs de la base de données à remplacer et quelles sont commandes SQL à utiliser.
Une fois que la totalité de votre blog a été déplacé, la première chose à faire, est d’informer WordPress du changement et de lui donner son nouvel emplacement (les fichiers wp-config. php et .htaccess ne devraient subir aucun changement). Cette valeur peut être modifiée depuis l’admin WP dans les options générales, mais si vous ne pouvez plus accéder à l’URL de l’ancien blog, vous devrez directement modifier cette valeur depuis la base de données MySQL.
2.1 Changer l’URL de de WordPress via votre tableau de bord
La première méthode, et la plus courante, consiste à changer l’URL de votre WordPress directement depuis le tableau de bord d’administration. Dans le menu d’administration, allez à Paramètres > Général pour accéder à l’écran des paramètres généraux. Vous pouvez alors mettre à jour ce qui suit :
Adresse WordPress (URL) : L’adresse pour accéder à votre site.
Adresse du site (URL) : L’adresse de vos fichiers WordPress de base.
2.2 Changer l’URL de WordPress dans votre wp-config.php
La deuxième façon la plus courante de changer l’URL de votre WordPress est dans votre fichier wp-config.php. Il est important de noter que les valeurs figurant dans le wp-config.php ont priorité sur les paramètres des écrans d’administration de WordPress.
Le fichier wp-config.php est généralement situé dans le répertoire racine de votre site WordPress et est accessible via FTP. Dans votre fichier wp-config.php, ajoutez ces 2 lignes au-dessus de la ligne qui vous dit « Stop Editing » :
define( 'WP_HOME', 'https://url-de-votre-site.com' ); define( 'WP_SITEURL', ‘http://url-de-votre-site.com' );
Enregistrez votre fichier wp-config.php et fermez-le.
Lorsque vous retournerez dans l’écran des paramètres généraux de votre administration WordPress, vous verrez que ces deux champs sont maintenant grisés. Vous ne pouvez pas les modifier à moins de supprimer ces deux lignes du fichier wp-config.php.
2.3 Changement via la base de données : Requêtes SQL à utiliser
Certainement la méthode la plus sûre, le changement via votre base de données. Pour exécuter des requêtes SQL, connectez-vous à la base de données MySQL qui héberge les tables de WordPress via phpMyAdmin ou connectez-vous au serveur de base de données et exécutez le client MySQL en tant que root.
Pour mettre à jour les options concernant l’emplacement du nouveau WordPress, utilisez la commande SQL suivante:
UPDATE wp_options SET option_value = replace(option_value, 'https://www.ancien-domaine.com', 'https://www.nouveau-domaine.com') WHERE option_name = 'home' OR option_name = 'siteurl';
Après cela, vous aurez besoin de réparer les URL des articles et de vos pages, ces valeurs URL sont stockées comme des URL absolues, elles ont donc besoin d’être modifié, procédez au changement avec la requête SQL suivante:
UPDATE wp_posts SET guid = replace(guid, 'https://www.ancienne-url.com','https://www.nouvelle-url.com');
Si vous avez linké en interne au sein d’articles ou de pages avec des URL absolues, ces liens pointent désormais vers de mauvaises URL puisque vous avez déménagé. Utilisez la commande SQL suivante pour corriger tous les liens internes des articles et des pages:
UPDATE wp_posts SET post_content = replace(post_content, 'https://www.ancienne-url.com.com', 'https://www.nouvelle-url.com');
Enfin et pour finir, la requête suivante met à jour les liens dans la table wp_postmeta:
UPDATE wp_postmeta SET meta_value = replace(meta_value,'https://www.ancienne-url.com','https://www.nouvelle-url.com');
Nota : si vous n’utilisez pas le préfixe wp_ par défaut dans vos tables (comme dans les exemples ci-dessus), n’oubliez pas de l’adapter.
2.4 Le faire avec un plugin
Vous pouvez faire la même chose avec un plugin tel que Search & Replace. Attention, faites bien une sauvegarde de la base de données pour éviter tout problème.
Dans Search for, saisissez l’ancienne URL, dans Replace with la nouvelle URL. Sélectionnez les tables suivantes (tout en maintenant Ctrl+clic) : options, posts et postmeta.
Utilisez également l’option “Dry Run” qui permet de tester votre requête avant l’exécution.
Et voilà, c’est déjà terminé !!!
Parcourez maintenant votre site WordPress pour vérifier que tout fonctionne correctement. Vous aurez également besoin de vous reconnecter à l’administration WP, en effet, votre cookie d’authentification est devenu invalide en raison du changement d’URL.
Excellent article!
J’y ai trouvé des astuces qui me serviront très bien!
Merci pour le partage!
MErci beaucoup vous m’avez énormément aidé, grace à vous j’ai pu faire mon transfert facilement ! Encore merci!
Très bon article.
Cependant maintenant, en raison du nombre de sites que je fais, et des sites «tests» pour les clients, j’ai adopte la solution backupbuddy. C’est payant, mais tellement rapide et simple que ca vaut le coup. En plus ce plug gère les sauvegardes automatiques.
@Aymeric,
oui une solution très fonctionnelle que les services déportés, il en existe plusieurs voir : Différents Services de Sauvegarde pour WordPress.
Je ne connaissais pas la méthode replace() en SQL donc merci.
Je rajouterai que je revalide toujours les permaliens dans les réglages car parfois avec les Custom Post Types ça bug !
Juste un petit commentaire pour préciser que mon site a déménagé à l’adresse suivante: http://www.echodesplugins.li-an.fr/ Il faudrait donc modifier l’adresse donnée dans le billet.
Corrigé ;)
Bonjour,
J’ai créer un script PHP permettant d’automatisé les requêtes “REPLACE” de MySQL au travers de la base de données au complet.
http://www.francisparent.com/changer-nom-domaine-dun-site-web-utilisant-wordpress/
Je crois que ce tools est pertinent à vos lecteurs si vou avez une chance laissez-moi vos commentaires.
Bonjour,
Les 3 requêtes sont superbes !!!
Seulement les Widgets se vident… Quelqu’un a une explication ?
Bien cordialement,
@Sébastien,
As-tu regénéré ton .htaccess en allant dans Réglages -> Permaliens et en cliquant sur “Enregistrer les modifications”? (assure-toi aussi que le fichier .htaccess a les droits suffisant).
Tu peux aussi faire une recherche sur ton ancien nom de domaine au travers de la base de données complète à partir de PHPMyAdmin en utilisant les wildcard ex: %nomdedomaine.com% il est possible qu’il reste des traces dans d’autres tables si c’est le cas tu pourras mettre à jours les champs manuellement ou utiliser le script que j’ai fait: http://www.francisparent.com/changer-nom-domaine-dun-site-web-utilisant-wordpress/
Il m’est aussi arrivé parfois que lors du changement de domaine je perdre certaine configuration de thème et de widget dans ce temps malheureusement tu dois remettre tes widget et entrer les infos manuellement ce qui n’est pas une si grosse job si tu as fait un backup (export) de ta base de donnée avant la modifications.
En espérant que ça te donne un coup de main, bonne chance.
bonsoir,
merci pour les requêtes mais il ne manque pas pour la table wp_postmeta?
Merci pour l’explication il existe sinon des plugins de backup qui facilite la vie.
J’ai toujours cette liste dans mon Evernote de reqûetes pour changer de nom de domaine (ou pour créer une version de développement, par exemple dev.example.com). Par contre, une fois effectuées, il reste toujours quelques anciennes URL en base (plugins, options du thèmes…).
Ne serait-il pas possible de faire une seule requête, qui pour un schéma de base, change tous les champs contenant http://www.ancien-domaine.com par http://www.nouveau-domaine.com ?
Je m’avance un peu car je ne suis pas non plus spécialiste SQL, mais un requête du genre :
UPDATE wp_(*) SET $var_field = replace($var_field, ‘http://www.ancien-domain.com’, ‘http://www.nouveau-domaine.com’);
Qu’en pensez-vous ?
@Kalagan,
c’est dans l’esprit, voir également le commentaire + le lien de @Francis ci-dessus ou encore le script /search-and-replace-for-wordpress-databases/