J'ai un gros fichier httpd.conf, dont la plupart sont des hôtes virtuels. Existe-t-il un moyen de créer un fichier, par exemple virtual_hosts.conf, et de l'inclure à partir de httpd.conf? J'ai googlé un peu, mais je n'arrive pas à trouver grand-chose en ce qui concerne les inclus, juste le chargement du module.
Des informations sur les fichiers Apache httpd.conf peuvent être trouvées sur ici .
Certains extraits ont été copiés à partir de ce site Web pour garantir que les informations ne sont pas perdues si le lien était obsolète:
Include /usr/local/Apache2/conf/ssl.conf
Include /usr/local/Apache2/conf/vhosts/*.conf
Chemins relatifs:
Include conf/ssl.conf
Include conf/vhosts/*.conf
Caractères génériques:
Include conf/vhosts/*/*.conf
Je sépare chaque hôte virtuel dans son propre fichier de configuration vhost, de cette façon vous ne vous retrouvez pas à chercher dans un document géant à la recherche d'une petite directive. Similaire au post de Quanta:
Include /etc/Apache2/vhosts.d/*.conf
Placez-le simplement comme dernière ligne dans votre httpd.conf
puis divisez simplement votre vhosts.conf en fichiers individuels pour chaque domaine, c'est-à-dire.
domain1.conf
domain2.conf
domain3.conf
etc....
beaucoup plus facile à gérer. -sean
Vous pouvez le faire avec la directive Include :
Include /path/to/virtual_hosts.conf
IncludeOptional
Vous pouvez également utiliser la directive IncludeOptional
IncludeOptional conf/vhosts/*.conf
Dans ce cas, il ne peut donc y avoir aucun fichier approprié. Ou comme dit exactement dans la documentation,
Il fonctionne de manière identique à la directive Include, mais il sera ignoré en silence (au lieu de provoquer une erreur) si des caractères génériques sont utilisés et qu'ils ne correspondent à aucun fichier ou répertoire ou si aucun chemin de fichier n'existe sur le système de fichiers.
MAIS!
Faites attention au fait que certaines versions d'Apache ne parviennent pas à démarrer dans les cas où "le chemin du fichier n'existe pas sur le système de fichiers". Comme dans l'exemple ci-dessus s'il n'y a pas de répertoire conf/vhosts/
.
Donc, dans un tel problème, vous pouvez en fait être limité dans l'utilisation sûre de cette directive en n'utilisant pas certains sous-répertoires lorsque vous n'êtes pas sûr s'ils existent
Comme une telle manière:
<VirtualHost *:80>
DocumentRoot "/var/www/example.com"
ServerName "example.com"
ServerAlias "www.example.com" "example.com"
...
IncludeOptional /var/www/example.com/*.httpd.conf
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/other.org"
ServerName "other.org"
ServerAlias "www.other.org" "other.org"
...
IncludeOptional /var/www/other.org/*.httpd.conf
</VirtualHost>
Quand certains aiment
IncludeOptional /var/www/other.org/*.httpd.conf
will fonctionne bien (avez-vous un fichier correspondant au masque donné ou non), mais
IncludeOptional /var/www/other.org/config_optional_subdir/*.conf
échouera s'il n'y a pas un tel sous-répertoire config_optional_subdir
.
Notez que
IncludeOptional /var/www/other.org/extra.httpd.conf
échouera aussi si au moins un des sites n'aura pas exactement spécifié fichier extra.httpd.conf
. Les caractères génériques sont la clé.
Donc, si une configuration de site commune est créée et peut être recréée automatiquement par un modèle , mais certains sites concrets nécessitent une configuration Apache supplémentaire qui ne peut pas être écrite uniquement dans un fichier .htaccess - vous pouvez utiliser cette approche.