Wie man mit Wordpress auf localhost umgeht

8

Ich betreibe mit localhost eine WP-Site auf meinem Laptop und brauche oft meine Mitarbeiter, um sie zu sehen. Wenn sie die IP meines Hauses eingeben, konnten sie auf die Site zugreifen, aber alle URLs in WP, die site_url () oder ähnliches verwendeten, gaben "localhost" aus, was natürlich für Außenstehende nicht funktionierte.

Also habe ich WP geändert, um meine IP für die Site-URL zu verwenden, die das Problem gelöst hat, aber eine andere erstellt. Wenn ich meinen Laptop von zu Hause mitbringe und versuche, meine Website anzuzeigen, werden jetzt alle Links als http: // home-ip / angezeigt, die nicht verfügbar sind. Außerdem kann ich nicht in wp-admin gelangen, um die Site-URL wieder in localhost zu ändern, da ich zu http: // home-ip / site / wp-admin / umgeleitet werde .

Gibt es eine Möglichkeit, damit umzugehen, ohne die URL jedes Mal ändern zu müssen, wenn jemand anderes von außen darauf zugreifen soll oder wenn ich das Haus verlasse?

user1778856
quelle

Antworten:

9

Sie können verwenden wp-config.php, um die Site-URL zu ändern, je nachdem, von wo aus auf die Site zugegriffen wird $_SERVER['REMOTE_ADDR']. Meins hat so etwas:

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);

Diese Technik hilft auch sehr dabei, das Hochladen der Site auf einen Produktionsserver oder das Synchronisieren lokaler und Produktionsversionen der Site zu vereinfachen. (Allerdings sollte der wp-config.phpauf dem Produktionsserver offensichtlich diesen Code nicht haben.)

Hinweis: Aus irgendeinem Grund kann ich meine externe Heim-IP von anderen Computern in meinem Heimnetzwerk nicht verwenden. Wenn dies nicht der Fall ist, können Sie das entfernen else ifund nur das elseTeil belassen.

adelval
quelle
1
Danke, das hat bei mir funktioniert. Allerdings musste ich ein || hinzufügen $ _SERVER ['REMOTE_ADDR'] == ':: 1'
user1778856
1
Interessant, ich wusste nichts davon, aber eine schnelle Suche sagt mir, dass ":: 1 die Loopback-Adresse in IPv6 ist. Betrachten Sie es als die IPv6-Version von 127.0.0.1". Ich habe die Antwort bearbeitet, um sie aufzunehmen.
Adelval
1

Obwohl die akzeptierte Antwort gut zu sein scheint, funktioniert das Ändern von WP_SITEURL / WP_HOME in meinem Fall nicht, da der Textinhalt auf den Seiten immer viele absolute Links enthält (dh Bilder oder Links, die über den WYSIWYG-Editor hinzugefügt wurden). . Mit anderen Worten, ich ziemlich viel habe , um die gleiche Domain verwenden , wenn ich die Website will richtig arbeiten.

Für den Fall, dass es jemand anderem hilft, der darauf stößt, war meine Lösung eine Lösung außerhalb von Wordpress - obwohl dies möglicherweise nicht in allen Fällen hilfreich ist.

Ich verwende eine Domain, zum Beispiel me.mycompany.com, und lasse sie dann in meiner HOSTS-Datei in 127.0.0.1 (mit anderen Worten localhost) auflösen. Für jeden meiner Kollegen, der die Site anzeigen muss, füge ich meine Domain mit meiner lokalen IP zu ihrer HOSTS-Datei hinzu.

Diese Lösung wird auch erweitert, wenn Kunden außerhalb unseres Netzwerks die Site anzeigen müssen. Wir stellen einfach sicher, dass me.mycompany.com in unsere öffentliche IP-Adresse aufgelöst wird (normalerweise kann Ihr Webhost dabei helfen, und es ist auf jeden Fall hilfreich, wenn Sie auch eine statische IP-Adresse für Ihre Internetverbindung haben), und leiten dann an unserem Router das Web weiter Anfragen an meine interne IP, um effektiv eine einfache Webhosting-Lösung einzurichten (natürlich nur für die Entwicklung, nicht für die Produktion!)

Hoffe das hilft jemandem. Die HOSTS-Datei kann auf jeder Plattform bearbeitet werden. Offensichtlich unterscheiden sich die Anweisungen für Windows, Mac und Linux. Wenn Sie Hilfe benötigen, wenden Sie sich am besten an Google. Unter Windows lautet die Datei jedoch C: \ Windows \ System32 \ drivers \ etc \ hosts -. Öffnen Sie es im Editor und nehmen Sie die erforderlichen Änderungen gemäß dem Format in der Datei vor (Sie müssen als Administrator ausgeführt werden, um die Datei zu speichern).

Tim Malone
quelle