Ich habe die Domäne example.com
und habe den Ubuntu-Apache-Server so eingerichtet, dass er jede Subdomäne auf ein gleichnamiges Verzeichnis verweist.
<VirtualHost *:80>
ServerAlias *.example.com
VirtualDocumentRoot /var/www/html/%1
</VirtualHost>
Ich werde also subdomain.example.com
auf verweisen example.com/subdomain
.
Ich versuche, Benutzern zu ermöglichen, ihre eigene benutzerdefinierte Domäne auf eine Subdomäne ihrer Wahl zu verweisen. Wie könnte ich dies erreichen und welche Datensätze wären erforderlich und was müsste mit derVirtueller Host?
Ich habe folgenden Datensatz probiert:
sampledomain.example
(CNAMEDatensatz) -@
-->sample.example.com
sampledomain.example
(ADatensatz) -@
--> (IP
Adresse von example.com)
Ich habe auch versucht, www
für den CNAME zu verwenden und gleichzeitig das zu entfernen A record
.
sample.example.com
verweist erfolgreich auf example.com/sample
. Verhält sich jedoch sampledomain.example
aus irgendeinem Grund wie die Stammsite.
Wenn ich also besuche sampledomain.example/sample
, erhalte ich den Inhalt von, example.com/sample
anstatt auf zu verweisen sample.example.com
.
Wie kann ich das lösen? Welche Datensätze werden benötigt und was kann mit dem virtuellen Host gemacht werden?
Ich habe einen CNAME-Eintrag verwendet, damit ich den benutzerdefinierten Domänennamen über PHP abrufen kann, wenn der Benutzer diesen besucht. Ist der CNAME erforderlich?
Antwort1
Wenn Sie damit einverstanden sind, dies auf Anfrage Ihres Kunden manuell zu tun, ist dies ganz einfach. Sie müssen lediglich ServerAlias sampledomain.com
die Vhost-Konfiguration ergänzen und die Webserver-Konfiguration neu laden.
Wenn Sie jedoch möchten, dass Ihre Kunden dies selbst in einer Art Kundenkontrollschnittstelle tun, ist dies aufgrund der Funktionsweise virtueller Hosts auf einem Webserver nicht ohne weiteres möglich. Hier ist der Grund:
Wenn Sie einen DNS-Eintrag (unabhängig davon, ob A
oder CNAME
) haben, der sampledomain.com
auf Ihren Webserver verweist, sendet der Browser eine Anfrage an die IP-Adresse Ihres Servers mit dem Host
auf gesetzten HTTP-Header sampledomain.com
. Der Webserver verwendet diesen Header, um zu entscheiden, welcher virtuelle Host dies handhaben soll, und wenn sampledomain.com
weder ein virtueller Hostname noch ein Alias ist, wird die Anfrage, wie Sie erfahren haben, vom Standard-virtuellen Host beantwortet.
Um dies zu ermöglichen, müssen Ihre Kunden Aliase für ihren virtuellen Host konfigurieren können. Mit Apache ist dies nicht einfach, aber theoretisch können Sie dies aus einer Datenbank lesen, wie erklärtHier(Ich habe das noch nie ausprobiert und habe daher keine Ahnung, ob es funktioniert.)
Auch Dinge wieVirtualMinkönnte in einem solchen Fall hilfreich sein.