Virtualhost Für Wildcard Subdomains und Static Subdomäne
-
09-09-2019 - |
Frage
Ich habe eine merkwürdige Situation, wo ich die URLs app1.example.com
, example.com
haben will und *.example.com
alle einen anderen virtuellen Host verwenden. Dies ist, was ich habe (ohne example.com
weil es macht es nur Messier).
<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 Konflikte. Unabhängig davon, welche man zuerst genannt siegt. Wie kann ich sowohl eine Wildcard Virtualhost und einen spezifischen Host?
Hinweis: Ich bin gerade nicht DocumentRoot
in der Config ändern, so mod_rewrite
mit den DocumentRoot Variablen ändern es nicht beheben
Lösung
<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 funktionieren. Der erste Eintrag wird den Standard wird, wenn Sie kein explizites Spiel bekommen. Also, wenn Sie app.otherexample.com Punkt haben, wäre es app1.example.com gefangen werden.
Andere Tipps
Wildcards können nur in dem Serveralias verwendet werden, anstatt der Servernamen. Etwas, das hatte mich ratlos.
Für Ihren Anwendungsfall sollten Folgendes genügen
<VirtualHost *:80>
ServerAlias *.example.com
VirtualDocumentRoot /var/www/%1/
</VirtualHost>
gibt es auch weitere Informationen unter https: //www.chris-shaw.com/blog/using-wildcards-in-virtual-hosts-on-apache
Das funktioniert auch für https eine Lösung benötigt, um zu machen Projektverzeichnisse dies es war. da Chrom verwendet keine nicht ssl gerne mehr kostenlos ssl. Hinweis: My Web Server ist Wamp64 unter Windows 10, so würde ich nicht diese Konfiguration verwenden, da der Variablen, es sei denn Ihr mit wamp.
<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>