web-dev-qa-db-fra.com

Comment traiter avec Wordpress sur localhost

J'utilise un site WP sur mon ordinateur portable à l'aide de localhost et j'ai souvent besoin de mes collègues pour le consulter. S'ils entrent dans l'IP de mon domicile, ils pourront accéder au site, mais toutes les URL de WP qui utilisent site_url () ou similaire font écho à "localhost", ce qui ne fonctionne bien sûr pas pour les étrangers.

J'ai donc changé WP pour utiliser mon adresse IP pour l'URL du site qui a résolu ce problème, mais en a créé un autre. Si j'emporte mon ordinateur portable hors de chez moi et que j'essaie de voir mon site, tous les liens apparaissent maintenant sous la forme http: // home-ip/ qui n'est pas disponible. De plus, je ne parviens pas à entrer dans wp-admin pour modifier l'URL du site en localhost car je suis redirigé vers http: // home-ip/site/wp-admin/ .

Y a-t-il un moyen de régler ce problème sans avoir à modifier constamment l'URL chaque fois que je souhaite qu'une autre personne y accède de l'extérieur ou à chaque fois que je quitte la maison.

7
user1778856

Vous pouvez utiliser wp-config.php pour modifier l’URL du site en fonction de l’accès au site, en utilisant $_SERVER['REMOTE_ADDR']. Le mien a quelque chose comme ça:

if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1' || $_SERVER['REMOTE_ADDR'] == '::1') { 
    // accesing site from my local server
    define('WP_SITEURL', 'http://localhost/mysite/');
    define('WP_HOME', 'http://localhost/mysite');
} else if (strpos($_SERVER['REMOTE_ADDR'],'192.168.0.') !== false) {
    // accesing site from another machine in my home network, 
    // all their (internal) network addresses begin with this number;
    // the next line provides the server's own internal network address 
    define('WP_SITEURL', 'http://192.168.0.192/mysite/');
    define('WP_HOME', 'http://192.168.0.192/mysite');
} else { //accesing site from outside home
    define('WP_SITEURL', 'http://89.*.*.*/mysite/'); //replace by your external home IP
    define('WP_HOME', 'http://89.*.*.*/mysite');
}
//error_log("Siteurl is ".WP_SITEURL);

Cette technique aide également beaucoup à simplifier le téléchargement du site sur un serveur de production ou la synchronisation des versions locale et de production du site. (Bien que, évidemment, le wp-config.php sur le serveur de production ne devrait pas avoir ce code.)

Remarque: pour une raison quelconque, je ne peux pas utiliser mon adresse IP domestique externe à partir d'autres machines de mon réseau domestique; si ce n'est pas votre cas, vous pouvez supprimer le else if, en ne laissant que la partie else.

8
adelval

Bien que la réponse acceptée semble être une bonne réponse, le simple fait de changer WP_SITEURL/WP_HOME ne fonctionne pas dans mon cas car il y a toujours beaucoup de liens absolus dans le contenu du texte des pages (par exemple, des images ou des liens ajoutés via l'éditeur WYSIWYG). . En d’autres termes, j’ai à peu prèsutiliser le même domaine si je veux que le site fonctionne correctement.

Donc, au cas où cela aiderait quelqu'un d'autre qui l'aurait rencontré, ma solution était extérieure à Wordpress - bien que cela puisse ne pas aider dans tous les cas.

J'utilise un domaine, par exemple me.mycompany.com, puis dans mon fichier HOSTS, je le résous en 127.0.0.1 (en d'autres termes, localhost). Pour tous mes collègues qui ont besoin de consulter le site, j'ajoute mon domaine à leur fichier HOSTS avec mon IP locale.

Cette solution est également étendue lorsque des clients extérieurs à notre réseau doivent consulter le site. nous nous assurons simplement que me.mycompany.com résout notre adresse IP publique (généralement, votre hébergeur Web peut vous aider, ce qui est certainement utile si vous disposez également d'une adresse IP statique pour votre connexion Internet), puis dirigez le Web vers notre routeur. requêtes à mon adresse IP interne, mise en place efficace d'une solution d'hébergement Web simple (pour le développement bien sûr, pas pour la production!)

J'espère que ça aide quelqu'un. Le fichier HOSTS peut être édité sur n’importe quelle plate-forme. Évidemment, les instructions sont différentes pour Windows, Mac et Linux. Nous vous conseillons donc de vous aider, si vous en avez besoin, mais sous Windows, le fichier est C:\Windows\System32\drivers\etc\hosts - ouvrez-le dans le Bloc-notes et apportez les modifications nécessaires, en respectant le format indiqué dans le fichier (vous devrez exécuter l'administrateur en tant qu'administrateur pour pouvoir enregistrer le fichier).

1
Tim Malone