Virtualhost für Wildcard-Subdomain und statische Subdomain


76

Ich habe eine seltsame Situation , wo ich die URLs haben will app1.example.com, example.comund *.example.com alle einen anderen virtuellen Host verwenden. Dies ist, was ich habe (außer, example.comweil es nur unordentlicher macht).

<VirtualHost *>
  ServerName app1.example.com
  ServerAlias app1.example.com

  DocumentRoot = /var/www/app1
  # Other configuration for this app here

</VirtualHost>

<VirtualHost *>
  ServerName wildcard.example.com
  ServerAlias *.example.com

  DocumentRoot = /var/www/wildcard
  # other configuration for this app here

</VirtualHost>

Das Problem ist, dass sie in Konflikt stehen. Wer zuerst aufgeführt wird, gewinnt. Wie kann ich sowohl einen virtuellen als auch einen bestimmten Wildcard-Host hosten?

Hinweis: Ich ändere nicht nur DocumentRootdie Konfiguration, daher wird sie mod_rewritedurch Ändern der DocumentRoot-Variablen nicht behoben.

Antworten:


159
<VirtualHost *:80>
  DocumentRoot /var/www/app1
  ServerName app1.example.com
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot /var/www/example
  ServerName example.com
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot /var/www/wildcard
  ServerName other.example.com
  ServerAlias *.example.com
</VirtualHost>

Sollte arbeiten. Der erste Eintrag wird zum Standardeintrag, wenn Sie keine explizite Übereinstimmung erhalten. Wenn Sie also auf app.otherexample.com verweisen, wird app1.example.com abgefangen.


1
Nur eine Frage, was macht NameVirtualHost *:80das?
Pedro Moreira


3
Entfernen Sie die NameVirtualHost *:80: AH00548: NameVirtualHost hat keine Auswirkung und wird in der nächsten Version entfernt
Nerdoc

Die Wild Card funktioniert bei mir nicht, weißt du warum?
Ericn

1
NameVirtualHost *:80ist wichtig für Apache 2.2, keine Notwendigkeit für Apache 2.4, ich weiß nicht warum.
Leo Lee


1

Dies funktioniert auch für https benötigt eine Lösung, um Projektverzeichnisse zu erstellen, das war es. weil chrome kein ssl mehr mag, wird kein freies ssl mehr verwendet. Hinweis: Mein Webserver ist Wamp64 unter Windows 10, daher würde ich diese Konfiguration aufgrund von Variablen nur verwenden, wenn Sie wamp verwenden.

<VirtualHost *:443>
ServerAdmin test@test.com
ServerName test.com
ServerAlias *.test.com

SSLEngine On
SSLCertificateFile "conf/key/certificatecom.crt"
SSLCertificateKeyFile "conf/key/privatecom.key"

VirtualDocumentRoot "${INSTALL_DIR}/www/subdomains/%1/"

DocumentRoot "${INSTALL_DIR}/www/subdomains"
<Directory "${INSTALL_DIR}/www/subdomains/">
    Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.