Zwei (oder mehr) parallele (Unter-) TLDs, die beim Surfen auf der Site beibehalten werden / die Site-Adresse dynamisch festlegen?

10

Ich betreibe eine Website für eine deutsche NGO unter der Domain sub.example.org.
Kürzlich habe ich sub.example.chfür seine Schweizer Ausgründung hinzugefügt .

Beide (Unter-) Domänen verweisen auf denselben physischen Speicherort, eine WP-Installation ( nicht auf mehreren Standorten ).

Ich habe es so eingerichtet, dass sub.example.ch/registerzum Beispiel der Inhalt unter korrekt angezeigt wird sub.example.org/register.

Wenn ein Schweizer Besucher jedoch über regelmäßige Links vor Ort auf der Website surft, landet er unweigerlich auf der "regulären" Domain, da diese die in den allgemeinen Einstellungen definierte "WordPress-Adresse" (oder "Site-Adresse") verwenden entweder über get_home_urloder get_site_url()(oder ihre weniger tiefen get_bloginfo()Äquivalente).

Im Idealfall möchte ich, dass der Besucher weiterhin unter der Domain surft, mit der er die Site erreicht hat. Daher müsste ich wahrscheinlich den Rückgabewert der genannten Funktionen irgendwie filtern. Ein Filter, den es meines Wissens nicht gibt.

  1. Hat jemand Erfahrung mit solchen Dingen und eine anständige Lösung zur Hand?

  2. Ist das vielleicht eine blöde Idee und ich sollte sie zuerst loslassen?

Johannes Pille
quelle

Antworten:

9

Sie können die Optionsanforderungen für den Host filtern.

In Ihrer wp-config.php unter der Linie ...

require_once ABSPATH . 'wp-settings.php';

… Fügen Sie die folgenden Zeilen hinzu:

add_filter( 'pre_option_home', 'set_current_host' );
add_filter( 'pre_option_siteurl', 'set_current_host' );

function set_current_host()
{
    return 'http://' . $_SERVER['HTTP_HOST'];
}

add_filter()ist nicht früher verfügbar, und Sie sollten diesen Code in Ihrem behalten wp-config.php. Ich weiß nicht, ob es Nebenwirkungen gibt oder Fälle, in denen es nicht funktioniert. Sollte nicht passieren, aber testen Sie es gründlich.

Fuxia
quelle
Ich werde es auf jeden Fall gründlich testen. Jetzt.
Johannes Pille
4
12 Stunden später: Funktioniert ausnahmslos. Dass der Wert kommen müsste, $_SERVER['HTTP_HOST']ist ziemlich einfach, das wäre auch mein Ansatz gewesen. Während dies beantwortet wurde, habe ich versucht, den bloginfo_urlFilter von einem Plugin zu verwenden. Hat nicht die Arbeit machen. Um die Filterung in die Konfigurationsdatei aufzunehmen, hätte ich es jedoch nach Tagen des Nachdenkens versucht, wenn überhaupt. Das Ergebnis dieser Lösung hat meine wildesten Erwartungen übertroffen: Links lösen sich nicht nur gut auf, Anmeldeinformationen funktionieren auch und selbst das Back-End verschluckt sich nicht! Großartigkeit!
Johannes Pille
1
Beide (Unter-) Domänen verweisen auf denselben physischen Speicherort, eine WP-Installation (nicht auf mehreren Standorten). Dazu müssen Sie sich bei Ihrem Hosting-Service anmelden. Wenn Sie eine Subdomain, Domain, erstellen, müssen Sie einen Dokumentstamm angeben. Wählen Sie hier denselben Pfad wie Ihre Hauptdomäne aus, auf der WP installiert ist. Fügen Sie dann den Code hinzu. Versuchen Sie, über SEO (kanonische und alternative Tags) nachzudenken
Romain