私はApacheを初めて使用しますが、ローカルサーバー上の1つのvhostに対してのみ例外を作成するようにVirtualDocumentRoot
を構成する方法があるかどうか疑問に思っています。現在、私のサイトはすべて、規則sitename.dev
のフォルダーに保存されています。 httpd.conf
では、サーバー名に基づいてVirtualDocumentRoot
を動的に設定しています。
# get the server name from the Host: header
UseCanonicalName Off
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog /path/to/logs/access.log vcommon
ErrorLog /path/to/logs/errors.log
VirtualDocumentRoot /path/to/vhosts/%0
これは、1つの例外を除いて、すべてのサイトでうまく機能します...いずれかのサイトのドキュメントルートは、exception.dev/src/php
だけでなくexception.dev
を指している必要があります。
ここで見つけた答え によると、条件に基づいてVirtualDocumentRoot
を設定できないように聞こえます。そのため、exception.dev
が正しいディレクトリを指すように、ある種のエイリアスを設定することで問題が解決されることを期待していました。
VirtualScriptAlias
を追加しようとしましたが、これによりApacheサーバーが起動しなくなります。
VirtualScriptAlias /path/to/vhosts/exception.dev /path/to/vhosts/exception.dev/src/php
ScriptAlias
とAlias
だけで同じタイプのことを試しましたが、それでもうまくいきません。
ここに欠けているものはありますか?それとも私がやろうとしていることは不可能ですか?どんな助けでも大歓迎です!
ああ、それが役に立ったら、httpd -S
を実行した場合の出力は次のとおりです。
httpd: Could not reliably determine the server's fully qualified domain name, using XXXXX.local for ServerName
VirtualHost configuration:
Syntax OK
[〜#〜] update [〜#〜]:以下のシェーンの答えを次のように変更することでこれを機能させました:
NameVirtualHost *
<VirtualHost *:80>
ServerName exception.dev
DocumentRoot /path/to/vhosts/exception.dev/src/php
</VirtualHost>
<VirtualHost *:80>
ServerName default
ServerAlias *.dev
VirtualDocumentRoot /path/to/vhosts/%0
</VirtualHost>
「通常の」構成、VirtualDocumentRoot
、および例外構成を持つ別の仮想ホストを用意します。
NameVirtualHost *:80
<VirtualHost *:80>
ServerName default
ServerAlias *.dev
VirtualDocumentRoot /path/to/vhosts/%0
</VirtualHost>
<VirtualHost *:80>
ServerName exception.dev
DocumentRoot /path/to/vhosts/exception.dev/src/php
</VirtualHost>