web-dev-qa-db-ja.com

エイリアスを使用してApache2仮想ホストを設定するベストプラクティス?

次のように、DebianSqueezeサーバーでApache2仮想ホストを設定しています。

ファイル名:whatever.mydomain.com

Alias /whatever /var/www/whatever.mydomain.com

<VirtualHost *:80>
        ServerAlias whatever.mydomain.com
        ServerAdmin [email protected]
        VirtualDocumentRoot /var/www/%0 

        ErrorLog /var/log/Apache2/whatever.mydomain.com-error.log
        CustomLog /var/log/Apache2/whatever.mydomain.com-access.log combined
</VirtualHost>

<Directory /var/www/whatever.mydomain.com>
        AuthPAM_Enabled On
        AuthType basic
        AuthName "Authorization Required to proceed"
        AuthBasicAuthoritative off
        AuthUserFile /dev/null
        Require valid-user
</Directory>

同じサイトに2つのURL(whatever.mydomain.comとwww.mydomain.com/whatever)を提供したいと思います。

したがって、この問題を解決するために、ファイルの先頭にエイリアス/whatever/var/www/whatever.mydomain.comを構成しました。しかし、これが良い習慣であるかどうかはわかりません。そして、VirtualHostの設定についてはどうですか?もっとうまくできることがありますか?

そして最後の質問:ファイル内で変数を使用する方法はありますか?例として、VirtualDocumentRoot以外の場所で%0を繰り返しますか?

前もって感謝します、

編集:私は新しい問題を抱えています。グローバルエイリアスを使用すると、すべての仮想ホストが/ whateverエイリアスに応答し、www.mydomain.comでのみエイリアスを適用する必要があります。現時点では、RedirectMatchに苦労していますが成功していません。エイリアスではアクセスログとエラーログが仮想ホストログファイルに記録されないため、エイリアスの代わりにリダイレクトを使用しています。

1

エイリアスを独自の仮想ホストに配置することをお勧めします。例えば:

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/whatever.mydomain.com

    Alias /whatever /var/www/whatever.mydomain.com
    ErrorLog /var/log/Apache2/www.mydomain.com-error.log
    CustomLog /var/log/Apache2/www.mydomain.com-access.log combined
</VirtualHost>

それが私がやる方法ですが、もちろん、Apacheで物事を適切に行う方法はたくさんあります。それが機能する場合、それは機能します...

最後の質問について:設定ファイルで変数を実際に使用することはできませんが(いくつかの例外を除いて)、調査する価値のあるサードパーティのモジュールがあります。 1つはmod_macroです: http://people.Apache.org/~fabien/mod_macro/ 構成ファイルをより動的にするために使用できるもう1つはmod_Perlですが、これは非常に高度なトピックです。

1