4

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 がワイルドカード サーバー名を持つ仮想ホストを完全に無視していることです。test.domain1.com または test.domain2.com に対する要求は、/home/user1/public_html の内容を表示するだけです (Apache のデフォルト ルール)。

その他の情報:

/home/user1/subdomains/test/home/user2/subdomains/test両方が存在し、ファイルが含まれてい ます

私のすべてのドメインには、バインド構成にリストされているワイルドカード サブドメインがあり、Vhost ルールで指定された同じ IP を指しています。サブドメインの標準 Vhost ルールは機能しますが、ワイルドカードは機能しません。

の出力の抜粋バージョンhttpd -S

# httpd -S
VirtualHost 構成:
[ip here]:80 は NameVirtualHost です
         デフォルトサーバー domain1.com (/etc/httpd/sites/user1:1)
         ポート 80 namevhost domain1.com (/etc/httpd/sites/user1:1)
         ポート 80 namevhost *.domain1.com (/etc/httpd/sites/user1:14)
         ポート 80 namevhost domain2.com (/etc/httpd/sites/user2:1)
         ポート 80 namevhost *.domain2.com (/etc/httpd/sites/user2:14)
構文 OK
# httpd -M
ロードされたモジュール:
 core_module (静的)
 mpm_prefork_module (静的)
 http_module (静的)
 so_module (静的)
 rewrite_module (共有)
 auth_basic_module (共有)
 authz_host_module (共有)
 include_module (共有)
 log_config_module (共有)
 logio_module (共有)
 mime_magic_module (共有)
 mime_module (共有)
 vhost_alias_module (共有)
 dir_module (共有)
 suexec_module (共有)
 php5_module (共有)
 suphp_module (共有)
 ssl_module (共有)
構文 OK

問題が何であるかについての提案は大歓迎です。

4

2 に答える 2

11

私はとても初心者です。それは本当に簡単な解決策でした。

ServerNameワイルドカードは許可されていませんが許可ServerAliasされているため、サーバー名を再度複製しました。

これは、たまたまこの回答を見つけたドメインの最終的な最小化された構成です(Googleで検索して質問を見つけたが回答がない場合は嫌いです):

<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>
于 2009-04-24T14:26:55.487 に答える
0

David、成功した場合に mod_rewrite サイクルを停止するこのソリューションは、問題に役立ちます)。

ラウンドロビン ストッパーを書き換えます。

RewriteCond %{ENV:REDIRECT_STATUS} 200|[45]0[0-9]
RewriteRule .* - [L]
于 2010-02-07T00:20:23.117 に答える