Ich habe eine Konfigurationsdatei für virtuelle Apache2-Hosts. Für jeden virtuellen Host habe ich eine Konfigurationsdatei, die folgendermaßen aussieht:
NameVirtualHost mydomain.co.uk:80
<VirtualHost mydomain.co.uk:80>
DocumentRoot /home/d/r/drupal/web/public_html
ServerName mydomain.co.uk
ServerAlias www.mydomain.co.uk
ErrorLog /var/log/apache2/sites/mydomain.co.uk_error-log
CustomLog /var/log/apache2/sites/mydomain.co.uk_access-log "combined"
# Rewrite the www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.mydomain.co.uk/?$ [NC]
RewriteRule ^(.*)$ http://mydomain.co.uk$1 [L,R=301]
# Read in the drupal configuration
Include conf.d/drupal6.conf
# Block access while developing
# Include conf.d/beta.conf
</VirtualHost>
Wie kann ich meine Domain an einer einzigen Stelle angeben und diese Zeichenfolge wiederverwenden?
mydomain = "www.SomeDomainIHave.com"
Die Idee dahinter ist, dass ich die Domäne oben in der Datei angebe, um weiter unten auftretende Fehler zu vermeiden.
Hoffe, das ist verständlich.
Danke.
Antwort1
Wenn die meisten Ihrer virtuellen Hosts ähnlichen Vorlagen folgen, können Sie alternativ mod_macro verwenden. Ich habe dies kürzlich für eine Apache-Installation mit über 200 ähnlichen virtuellen Hosts eingerichtet und es funktioniert einwandfrei.
Ihr Beispiel würde wie folgt umgeschrieben: ( /etc/apache2/macro.d/drupal.vhost.conf (
<Macro drupal0 $domain>
NameVirtualHost $domain:80
<VirtualHost $domain:80>
DocumentRoot /home/d/r/drupal/web/public_html
ServerName $domain
ServerAlias www.$domain
ErrorLog /var/log/apache2/sites/$domain_error-log
CustomLog /var/log/apache2/sites/$domain_access-log "combined"
# Rewrite the www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.$domain/?$ [NC]
RewriteRule ^(.*)$ http://$domain$1 [L,R=301]
# Read in the drupal configuration
Include conf.d/drupal6.conf
# Block access while developing
# Include conf.d/beta.conf
</VirtualHost>
</Macro>
Verwenden des Makros: (/etc/apache2/sites-available/drupal.sites.conf)
Include /etc/apache2/macro.d/drupal.vhost.conf
Use drupal0 mydomain.co.uk
Antwort2
Direkt geht das nicht. Wenn Sie jedoch viele solcher Parameter festlegen möchten, reicht ein vorlagenbasierter Ansatz aus. Verwenden Sie m4/sed/ruby/python, um Variablen in Ihren Dateien zu ersetzen. Der Nachteil ist, dass Sie einen Prozess zum Neugenerieren der Dateien benötigen, wenn Sie etwas ändern, aber das kann automatisiert werden.
Antwort3
Schauen Sie sich Konfigurationsmanagement-Tools an wieMarionetteoderKoch. Damit können Sie Vorlagen für Konfigurationsdateien definieren und diese neu erstellen, wenn Sie Änderungen an den Einstellungen vornehmen. Sie können dann allgemeine Einstellungen wie den Domänennamen definieren und in Ihren Vorlagen wiederverwenden. Diese Tools würden dann eine neue Konfiguration bereitstellen und Ihre Webdienste neu starten. Erfinden Sie das Rad nicht neu, indem Sie Ihr eigenes Konfigurationsverwaltungstool schreiben (wer hat das übrigens noch nicht gemacht? :) )
Antwort4
es ist nicht möglich, Variablen zu verwenden, wie Keltia bereits sagte, aber vielleichtmod_vhost_aliaskann Ihnen bei Ihrem Problem helfen.
<VirtualHost 111.22.33.44>
ServerName www.commercial.isp.com
CustomLog logs/access_log.commercial vcommon
VirtualDocumentRoot /www/commercial/%0/docs
VirtualScriptAlias /www/commercial/%0/cgi-bin
</VirtualHost>
%0
wird in diesem Beispiel durch ersetzt www.commercial.isp.com
.
Hiersind einige weitere Beispiele.