mod_vhost_alias VirtualDocumentRoot viele Domänen

mod_vhost_alias VirtualDocumentRoot viele Domänen

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_aliasdas Modul zum Laufen gebracht und bin damit zufrieden, allerdings bin ich auf ein Problem mit .comDomänen vs. .co.ukDomänen .com.augestoßen und dieVirtualDocumentRoot

Für eine Domäne wie example.commöchte ich, dass alle Anfragen an www.exapmple.comund example.comauf ein Verzeichnis mit dem Namen verweisen, /var/webroot/example.comund für Domänen wie example.co.ukmöchte ich, dass alle Anfragen an www.example.co.ukund example.co.ukauf 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.comaber für example.co.uksucht 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_rewriteund 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/%0und erstellen Sie dann innerhalb /var/webroot/einen symbolischen Link, der www.example.comauf 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 wwwverweisen möchten .aaa.example.comexample.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/webrootentfernt .www

Alternativ können Sie auch eine Umleitung durchführen, um wwwalle Anfragen zu entfernen (oder hinzuzufügen), anstatt für beide Domänen denselben Inhalt bereitzustellen.

verwandte Informationen