J'ai une situation étrange où je veux avoir les URLs app1.example.com
, example.com
et *.example.com
utilisant tous un hôte virtuel différent. C’est ce que j’ai (à l’exclusion de example.com
car cela le rend encore plus désordonné).
<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>
Le problème est qu'ils sont en conflit. Celui qui est répertorié en premier gagne. Comment puis-je héberger un virtualhost générique et un spécifique?
Remarque: je ne change pas simplement DocumentRoot
dans la configuration, utiliser donc mod_rewrite
pour modifier la variable DocumentRoot ne le résout pas.
<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>
Devrait marcher. La première entrée deviendra la valeur par défaut si vous n'obtenez pas de correspondance explicite. Donc, si vous aviez app.otherexample.com à pointer dessus, il serait capturé par app1.example.com.
Les caractères génériques ne peuvent être utilisés que dans ServerAlias plutôt que dans ServerName. Quelque chose qui m'avait laissé perplexe.
Pour votre cas d'utilisation, les éléments suivants devraient suffire
<VirtualHost *:80>
ServerAlias *.example.com
VirtualDocumentRoot /var/www/%1/
</VirtualHost>
il y a aussi plus d'informations sur https://www.chris-shaw.com/blog/using-wildcards-in-virtual-hosts-on-Apache
Cela fonctionne également pour https avait besoin d'une solution pour créer les répertoires de projet. parce que chrome n'aime plus l'utilisation de ssl libre. Remarque: Mon serveur Web est Wamp64 sous Windows 10, je ne voudrais donc pas utiliser cette configuration à cause de variables sauf si vous utilisez wamp.
<VirtualHost *:443>
ServerAdmin [email protected]
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>