it-swarm.com.de

Wie implementiere ich WordPress in einem Unterverzeichnis, das auf einem anderen Server gehostet wird?

Ich arbeite mit einem Kunden zusammen, der bereits eine benutzerdefinierte E-Commerce-Website auf seiner eigenen Domain eingerichtet hat, z. example.com

Wir möchten ihr WordPress Blog in einem Unterverzeichnis ihrer Domain hosten, z. example.com/blog Aus Sicherheitsgründen können wir WordPress nicht auf demselben Server wie der Rest ihrer Site hosten.

Wir haben einen separaten Server eingerichtet, der das Blog WordPress hostet, und ihm eine temporäre Subdomain-URL zugewiesen.

Wie stellen wir sicher, dass example.com/blog die Wordpress Site von unserem Server aus bedient? Wir möchten keine Weiterleitung, sondern, dass das gesamte Blog im Unterverzeichnis '/ blog' gehostet wird. Welche URLs geben wir in die Datenbank WordPress ein? Wie sollen sie ihr Unterverzeichnis umleiten?

Ich weiß, dass Leute die Verwendung einer Subdomain empfehlen (dies ist das, was wir derzeit haben), aber der Kunde hat ausdrücklich die Verwendung eines Unterverzeichnisses für eine bessere SEO-Leistung angefordert.

3
J. Purcell

Die Subdomain ist sicherlich die einfachste Option, da Sie die Site auf einem anderen Server hosten möchten. Der Grund dafür ist, dass ein Hostname immer nur in einen einzelnen Speicherort aufgelöst werden kann. Wenn Sie sich wegen der geänderten URLs Sorgen über die Suchmaschinenoptimierung machen, könnten Sie stattdessen eine Weiterleitung zur Subdomain in Betracht ziehen.

Da Sie jedoch speziell versuchen, die Unterdomäne zu meiden, wird sich der Rest dieser Antwort darauf konzentrieren, wie dies zu tun ist.

Wenn/blog/von einem anderen Server bereitgestellt werden soll, müssen Sie einen Reverse-Proxy erstellen. Abhängig von Ihrer Zugriffsebene auf den aktuellen Webserver ist die beste Option, einen Reverse-Proxy zu erstellen. Die folgenden Anweisungen erfordern möglicherweise Kenntnisse in Bezug auf Serveränderungen, um sie zu implementieren und Fehler zu beheben.

Verwendung von Apache

Angenommen, Sie verwenden Apache, könnten Sie eine Regel wie die folgende hinzufügen:

ProxyPass /blog/ http://example.com/blog
ProxyPassReverse /blog/ http://example.com/blog

Sie können dies in Ihrem VirtualHost-Eintrag oder irgendwo in Ihrer httpd.conf platzieren. Dies setzt voraus, dass Sie mod_proxy installiert haben und dass ein Neustart von Apache erforderlich ist.

Wenn Sie das beliebte cPanel verwenden, können Sie hier nach Speicherorten suchen, um eine Datei mit einem Namen zu platzieren, der auf .conf endet: https://documentation.cpanel.net/display/EA/Modify) + Virtualhost + Container + Mit + Include + Dateien

Wenn Sie cPanel verwenden, sollte mod_proxy enthalten sein, damit Sie sich keine Sorgen machen müssen, aber Sie müssen /scripts/rebuildhttpdconf und dann Apache neu starten.

Auf diese Weise können Sie eine Verbindung zu einem anderen Speicherort herstellen, um die tatsächlichen Blogseiten abzurufen, die über Ihren aktuellen Server bereitgestellt werden.

Das Problem mit WordPress ist, wie bei vielen CMS, dass es sehr wählerisch ist, welche URL Sie verwenden, um darauf zuzugreifen. Das bedeutet, wenn Sie eine Verbindung zu einer Unterdomäne herstellen und die Site-URL nicht übereinstimmt, liefert WordPress eine 404. Außerdem gibt WordPress häufig Weiterleitungen mit der Site-URL aus . Daher müsste der Server wahrscheinlich glauben, dass Sie eine Verbindung zu derselben URL herstellen, obwohl Sie eine Verbindung zu einem Remoteserver herstellen. Der schwierige Teil ist, dass Sie auch Root-Zugriff benötigen, um die hosts -Datei Ihres Servers ändern zu können. Auf einem Linux-Server finden Sie das unter /etc/hosts/ und können eine Zeile wie die folgende hinzufügen:

123.123.123.123 example.com

Wobei 123.123.123.123 die IP des Servers ist, auf dem Sie das Blog hosten würden. Dies funktioniert natürlich nur, wenn nichts anderes auf diesem Server eine Verbindung zu example.com erwartet.

Nginx verwenden

Wenn Sie Nginx verwenden, was etwas seltener vorkommt, können Sie dies etwas einfacher machen:

upstream blogbackend {
    server 123.123.123.123:80;
}

location /blog {
    proxy_pass http://blogbackend;
}

Da Sie in Nginx eine IP für das Backend angeben können, sollten Sie nicht mit der Datei hosts spielen müssen.

Seiten-URL

In beiden Fällen sollte der ferne Server mit dem Blog so konfiguriert sein, dass er den Inhalt für http://example.com/blog bereitstellt, und dieser wird der option_value für siteurl und home in der $ prefixoptions Tabelle. Wenn dies die ursprüngliche URL ist, sollten Sie sie nicht ändern müssen. Wenn Sie Änderungen vornehmen müssen, sollten Sie bereit sein, fest codierte URLs wie hochgeladene Bilder usw. zu überprüfen.

Fazit

Diese Lösung ist etwas chaotisch und es kann eine Menge schief gehen. Es ist jedoch wahrscheinlich immer noch sauberer als die nächste Alternative, bei der Sie/blog/Inhalte über einen PHP -Proxy bereitstellen, möglicherweise unter Verwendung von curl. Dies ist der Grund, warum der Standardansatz darin besteht, einfach eine Unterdomäne zu verwenden.

3
DKing

Ihr Server hat eine IP-Adresse, Sie können diese also einfach abrufen und eine Unterdomäne erstellen, wo auch immer der DNS für die Domain gehostet wird. Angenommen, Sie möchten blog.domain.com erstellen. Sie können dies auf die IP-Adresse Ihres Servers verweisen.

0
Dynadot