83

app1.example.comURLを取得したいという奇妙な状況がありexample.com*.example.com すべてが別の仮想ホストを使用しています。これは私が持っているものです(example.comそれはそれが面倒になるだけなので除く)。

<VirtualHost *>
  ServerName app1.example.com
  ServerAlias app1.example.com

  DocumentRoot = /var/www/app1
  # Other configuration for this app here

</VirtualHost>

<VirtualHost *>
  ServerName wildcard.example.com
  ServerAlias *.example.com

  DocumentRoot = /var/www/wildcard
  # other configuration for this app here

</VirtualHost>

問題は、それらが競合することです。最初にリストされた方が勝ちます。ワイルドカード仮想ホストと特定の仮想ホストの両方をホストするにはどうすればよいですか?

注: 構成を変更DocumentRootするだけではないためmod_rewrite、DocumentRoot 変数を変更しても修正されません。

4

3 に答える 3

170
<VirtualHost *:80>
  DocumentRoot /var/www/app1
  ServerName app1.example.com
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot /var/www/example
  ServerName example.com
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot /var/www/wildcard
  ServerName other.example.com
  ServerAlias *.example.com
</VirtualHost>

動作するはずです。明示的に一致しない場合、最初のエントリがデフォルトになります。そのため、app.otherexample.com がそれを指している場合、app1.example.com として捕捉されます。

于 2009-04-16T23:02:58.290 に答える