3

アクセスに使用したホスト名に基づいてすべてのリクエストを動的に処理できる単一の仮想ホストを設定したいと思います。%{HTTP_HOST}をDocumentRootで使用できる場合、これはおそらくまさに私が望むものです。

<VirtualHost *:80>
    ServerAdmin me@example.com

    DocumentRoot /var/www/live/%{HTTP_HOST}/public
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/live/%{HTTP_HOST}/public>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
    LogLevel warn
    ErrorLog /var/www/live/%{HTTP_HOST}/logs/error.log
    CustomLog /var/www/live/%{HTTP_HOST}/logs/access.log combined
</VirtualHost>

...残念ながら、%{HTTP_HOST}はDocumentRoot(Warning: DocumentRoot [/var/www/live/%{HTTP_HOST}/public] does not exist)では許可されていません。他にどのように私は私の目標を達成することができますか?

更新: キャッチオール仮想ホストを単一のディレクトリにポイントし、.htaccessでmod_rewriteを使用してパスを動的に選択することを考えましたが、(正直なところ)疲れ果てています。朝にまたやってみますが、それまでの間、いいアイデアがあればぜひ聞いてみたいです!ありがとうございました!

4

2 に答える 2

4

たぶん、この記事から次の解決策を試すことができます:Apache:動的仮想ホスト

数か月前、開発マシンで新しいサイトを構成するたびに、Apacheで個々の仮想ホストを作成するという問題を解決するソリューションを探しました(多くのWebサイトがある作業では大きな問題です)。 。Apacheは、モジュールと構成ファイルの数行を使用して、この機能を比較的簡単にサポートできます。私はこれをFedora14で設定したので、他のOSでは結果がわずかに異なる場合があります(異なるパス、構成ファイルの設定など)

メインのApacheconf(/etc/httpd/conf/httpd.conf)を開き、モジュールmod_vhost_aliasが有効になっていることを確認します。次のような構成に行があるはずです

LoadModule vhost_alias_module modules/mod_vhost_alias.so 

次に、このファイルの最後に次の行を追加します。sudo権限でファイルを編集する必要があります。

NameVirtualHost *:80

UseCanonicalName Off

<VirtualHost *:80>
    VirtualDocumentRoot /var/www/html/domains/%0 
</VirtualHost>

これにより、ポート80を介して着信するすべてのドメインのキャッチオールが設定されます(httpトラフィックのデフォルトポート。httpsを使用する場合は443を使用する必要があります。または、ポート制限を削除することもできます)。ここで重要なのはVirtualDocumentRootです。は、ファイルがディスク上のどこにあるかをApacheに通知します。%0の部分はドメイン名全体を取得し、それをパスに挿入します。これを説明するために、ドメインtesting.com.devにアクセスすると、VirtualDocumentRootは次のようになります。

/var/www/html/domains/testing.com.dev 

このタイプの構成はほとんどの状況に適している可能性がありますが、ディスク上のフォルダーにドメインの.dev部分を含めたくありませんでした。VirtualDocumentRootを次のように設定することでこれを実現できました。

VirtualDocumentRoot /var/www/html/domains/%-2+ 

上記のtesting.com.devの例は、次のことを示しています。

/var/www/html/domains/testing.com 

ドメインをhostsファイル(/ etc / hosts)に追加することを忘れないでください

オプションの完全なリストについては、mod_vhost_aliasのドキュメントを参照してください。追加のドキュメントはここにあります。

于 2012-07-17T20:57:56.733 に答える
4

動的仮想ホストを実現するための公式の方法は、Apache ドキュメントで説明されています。

http://httpd.apache.org/docs/2.0/vhosts/mass.html

于 2012-02-02T17:17:04.300 に答える