Apache 2.2 ignoriert VirtualDocumentRoot Virtual?
-
16-09-2019 - |
Frage
Ich habe mehrere Domains, die Ich mag würde Wildcard Sub-Domains für über mod_vhost_alias aktiviert sein
Im meine httpd.conf Ich habe folgende verallgemeinerte Regeln:
<VirtualHost [ip here]:80>
ServerName domain1.com
ServerAlias www.domain1.com
DocumentRoot /home/user1/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
ServerName *.domain1.com
VirtualDocumentRoot /home/user1/subdomains/%-3+
</VirtualHost>
<VirtualHost [ip here]:80>
ServerName domain2.com
ServerAlias www.domain2.com
DocumentRoot /home/user2/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
ServerName *.domain2.com
VirtualDocumentRoot /home/user2/subdomains/%-3+
</VirtualHost>
Das Problem ist, dass Apache vollständig die Virtual mit den Wildcard-Servernamen ignoriert. Jeder Antrag auf test.domain1.com oder test.domain2.com zeigt nur den Inhalt von / home / user1 / public_html (die Standardregel nach Apache).
Einige andere Informationen:
/home/user1/subdomains/test
und /home/user2/subdomains/test
beide existieren und Dateien in ihnen
Alle meine Domains haben eine Wildcard Sub-Domain in bind Config aufgeführt sind, und sie weisen auf die gleiche IP in den Vhost Regeln festgelegt. Standard Vhost Regeln für Subdomains Arbeit, aber nicht Wildcard.
Ein snipped Version der Ausgabe von httpd -S
# httpd -S VirtualHost configuration: [ip here]:80 is a NameVirtualHost default server domain1.com (/etc/httpd/sites/user1:1) port 80 namevhost domain1.com (/etc/httpd/sites/user1:1) port 80 namevhost *.domain1.com (/etc/httpd/sites/user1:14) port 80 namevhost domain2.com (/etc/httpd/sites/user2:1) port 80 namevhost *.domain2.com (/etc/httpd/sites/user2:14) Syntax OK
# httpd -M Loaded Modules: core_module (static) mpm_prefork_module (static) http_module (static) so_module (static) rewrite_module (shared) auth_basic_module (shared) authz_host_module (shared) include_module (shared) log_config_module (shared) logio_module (shared) mime_magic_module (shared) mime_module (shared) vhost_alias_module (shared) dir_module (shared) suexec_module (shared) php5_module (shared) suphp_module (shared) ssl_module (shared) Syntax OK
Irgendwelche Vorschläge, was das Problem sehr geschätzt wird würde.
Lösung
Ich bin so ein noob, es war eine echte einfache Lösung.
ServerName
keine Platzhalter erlauben, aber ServerAlias
tut, so dass ich dupliziert nur die Servernamen wieder.
Hier ist die letzte minimiert Config für Domains jeder, der diese Antwort finden passiert (ich hasse es, wenn Sie auf Google suchen und Fragen finden, aber keine Antworten):
<VirtualHost [ip here]:80>
ServerName domain1.com
ServerAlias www.domain1.com
DocumentRoot /home/user1/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
ServerName domain1.com #<-- The fix. Wildcards not supported in ServerName
ServerAlias *.domain1.com
VirtualDocumentRoot /home/user1/subdomains/%-3+
</VirtualHost>
Andere Tipps
David, diese Lösung, die mod_rewrite Zyklus stoppt, wenn Erfolg für Ihr Problem nützlich sein wird).
Rewrite Round-Robin-Stopper:
RewriteCond %{ENV:REDIRECT_STATUS} 200|[45]0[0-9] RewriteRule .* - [L]