Apacheの2.2 VirtualDocumentRoot仮想ホストを無視して?
-
16-09-2019 - |
質問
私はmod_vhost_aliasを通じてのために有効にワイルドカードサブドメインを持ちたい複数のドメインを持っている。
私は、次の一般的なルールを持って、私のhttpd.confに含まれます:
<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>
問題は、Apacheが完全にワイルドカードServerNamesと仮想ホストを無視していることです。 test.domain1.comまたはtest.domain2.comのためのすべての要求はただの/ home / user1の/ public_htmlの(apacheのに応じて、デフォルトのルール)の内容を表示します。
いくつかの他の情報:
/home/user1/subdomains/test
と/home/user2/subdomains/test
の両方に存在し、それらのファイルを持っている。
すべての私のドメインは、バインドの設定に記載されているワイルドカードサブドメインを持っている、と彼らはバーチャルホストのルールで指定されたものと同じIPを指しています。標準的なバーチャルホストのサブドメインの仕事のためのルールではなく、ワイルドカードます。
httpd -S
の出力のA切り取らバージョン
# 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
問題が何であるかについての任意の提案をいただければ幸いです。
解決
私は、このようなnoobのだけど、それは本当の簡単な解決策だった。
ServerName
は、ワイルドカードを許すが、ServerAlias
んので、私は再びサーバー名を重複しません。
ここでは(あなたがGoogleで検索し、質問が、ノーの答えを見つけたとき、私はそれを嫌う)この答えを見つけるために起こるドメインの誰のための最終的な最小限configがあります
<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>
他のヒント
デビッド、成功はあなたの問題のために有用であろう時にmod_rewriteのサイクルを停止し、この溶液)。
書き換えラウンドロビンストッパーます:
RewriteCond %{ENV:REDIRECT_STATUS} 200|[45]0[0-9] RewriteRule .* - [L]