
Ich bin sicher, dass ich nicht der Erste bin, der auf dieses Problem stößt, aber ich kann beim besten Willen keine Antwort finden – obwohl das auch daran liegen könnte, dass ich nicht weiß, wonach ich suchen soll.
Ich muss viele Client-Websites auf einem Ubuntu-Server hosten. Alles funktioniert gut, aber ich möchte dynamische virtuelle Hosts einrichten, damit ich den Prozess der Erstellung einer WordPress-Site auf dem Server automatisieren kann. Ich habe mod_vhost_alias
das Modul zum Laufen gebracht und bin damit zufrieden, allerdings bin ich auf ein Problem mit .com
Domänen vs. .co.uk
Domänen .com.au
gestoßen und dieVirtualDocumentRoot
Für eine Domäne wie example.com
möchte ich, dass alle Anfragen an www.exapmple.com
und example.com
auf ein Verzeichnis mit dem Namen verweisen, /var/webroot/example.com
und für Domänen wie example.co.uk
möchte ich, dass alle Anfragen an www.example.co.uk
und example.co.uk
auf ein Verzeichnis mit dem Namen verweisen./var/webroot/example.co.uk
Der VDR, den ich im Moment habe, sieht so aus ...
VirtualDocumentRoot /var/webroot/%-2.0.%-1.0
Dabei werden die vorletzten und letzten Teile erfasst. Das funktioniert gut für , example.com
aber für example.co.uk
sucht es nach einem Verzeichnis bei /var/webroot/co.uk
– was nicht ideal ist!
Gibt es eine Möglichkeit, das zu umgehen? Muss ich es verwenden mod_rewrite
und wenn ja, wie?
Antwort1
In diesem Fall würde ich die symbolischen Links einfach aufteilen, anstatt einen sehr spezifischen (und möglicherweise instabilen) Typ zu verwenden RewriteRule
:
Verwenden Sie VirtualDocumentRoot /var/webroot/%0
und erstellen Sie dann innerhalb /var/webroot/
einen symbolischen Link, der www.example.com
auf das echte Verzeichnis von verweist example.com
. Dies funktioniert mit beliebig tiefen Domänen und ist zudem etwas flexibler, wenn Sie eine Site haben, die aus irgendeinem Grund andere Inhalte haben soll, oder wenn Sie auf dieselben Inhalte wie www
verweisen möchten .aaa.example.com
example.com
Wenn Ihnen das nicht gefällt, können Sie Folgendes verwenden mod_rewrite
:
DocumentRoot /var/webroot
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteRule ^/(.*)$ /%2/$1
Dabei wird immer nach dem Domänennamen gesucht und die Vorderseite, falls vorhanden, vor dem Suchen /var/webroot
entfernt .www
Alternativ können Sie auch eine Umleitung durchführen, um www
alle Anfragen zu entfernen (oder hinzuzufügen), anstatt für beide Domänen denselben Inhalt bereitzustellen.