web-dev-qa-db-ja.com

Apache-httpd.confで仮想ホストのVirtualDocumentRootの例外を作成するにはどうすればよいですか?

私は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

ScriptAliasAliasだけで同じタイプのことを試しましたが、それでもうまくいきません。

ここに欠けているものはありますか?それとも私がやろうとしていることは不可能ですか?どんな助けでも大歓迎です!

ああ、それが役に立ったら、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>
1
luke

「通常の」構成、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>
1
Shane Madden