Ich möchte www.example.com einem bestimmten virtuellen Host zuordnen und dann möchte ich, dass alle anderen Subdomains von example.com zu einem anderen virtuellen Host wechseln.
Dazu habe ich folgende Hosts erstellt:
<VirtualHost *:80>
ServerName www.example.com
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
</VirtualHost>
Nun scheint die Auswahl, welcher Host bedient wird, eher zufällig zu sein. Wenn ich Apache manchmal neu starte, bekomme ich manchmal einen Host und ein anderes Mal einen anderen.
Was mache ich falsch?
Vielen Dank!
Update: Wenn ich apache2ctl -S in dieser Konfiguration ausführe, erhalte ich folgende Ausgabe:
VirtualHost-Konfiguration: Platzhalter NameVirtualHosts und _default_ Server: *: 80 ist ein NameVirtualHost Standardserver www.example.com (/ etc / apache2 / sites-enabled / dev: 3) Port 80 namevhost www.example.com (/ etc / apache2 / sites-enabled / dev: 3) Port 80 namevhost example.com (/ etc / apache2 / sites-enabled / dev: 22)
Nachdem ich viel herumgegraben hatte, entschied ich mich, die Mono-Anwendungen zu deaktivieren, die ich ausgeführt hatte, und siehe da, es wurden Dateien von der richtigen Site bereitgestellt. Sie mussten in der Reihenfolge eingegeben werden:
<VirtualHost *:80>
ServerName example.com
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
</VirtualHost>
wie vom Assistenten vorgeschlagen. Damit meine Mono-Apps funktionieren, habe ich in jedem virtuellen Host "MonoAutoApplication enabled" verwendet. Ich bin mir jedoch nicht sicher, ob dies die beste Option ist, da auf der Mono-Site angegeben ist , dass Sie kein automatisches Hosting für asp.net mvc-Apps verwenden sollten (was ich verwende). Bisher kann ich den Nachteil allerdings nicht erkennen.
quelle
Der Code sollte wahrscheinlich sein:
Sehen: http://httpd.apache.org/docs/2.2/vhosts/examples.html#default
Dies definiert den vhost "example.com" explizit als den zu verwendenden Host, wenn nichts anderes übereinstimmt.
quelle
Sind Sie sicher, dass der
www.example.com
vhost in der Konfigurationsdatei vor dem anderen vhost angezeigt wird? Apache soll die virtuellen Hosts der Reihe nach durchsuchen und den ersten mit einemServerName
oder auswählen, derServerAlias
dem imHost
HTTP-Header gesendeten Wert entspricht . Es scheint sehr seltsam, dass manchmal ein virtueller Host und manchmal der andere zufällig ausgewählt wird.Es kann hilfreich sein, Ihre Frage so zu bearbeiten, dass sie die Ausgabe von enthält
Hier werden die definierten virtuellen Hosts so angezeigt, wie Apache sie sieht.
quelle
Sie müssen den DocumentRoot zur Konfiguration hinzufügen. Es sollte ungefähr so sein:
EDIT: Scheint, als hätte ich mehr über Apache gewusst als ich. Danke für die Kommentare.
quelle