両方ともSetEnv
ディレクティブを使用し、同じDocumentRootを指します。
NameVirtualHost *:80
<VirtualHost _default_:80>
DocumentRoot "/Users/mf/Sites/test"
SetEnv FROM_ROOT 'i like tacos' ## <- SetEnv
</VirtualHost>
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/Users/mf/Sites/test"
<Directory "/Users/mf/Sites/test">
Options Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
SetEnv FROM_VHOST 'set in localhost vhost' ## <- SetEnv
</VirtualHost>
<VirtualHost *:80>
ServerName test
DocumentRoot "/Users/mf/Sites/test"
<Directory "/Users/mf/Sites/test">
Options Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
SetEnv FROM_VHOST 'set in test vhost' ## <- SetEnv
</VirtualHost>
テストファイルがあります/ Users/mf/Sites/test/dump.php:
var_dump( $_SERVER );
http://test/
すべてが期待どおりに機能するため、$_SERVER['FROM_VHOST']
が利用可能です。 dump.phpの出力:
array (size=33)
'UNIQUE_ID' => string 'UY7bHMCoAXIAABkbAkMAAAAC' (length=24)
'FROM_VHOST' => string 'set in test vhost' (length=17)
'HTTP_Host' => string 'test' (length=4)
…
http://localhost/
の場合、次のように分類されます。
array (size=34)
'UNIQUE_ID' => string 'UY7bA8CoAXIAABkZAhQAAAAA' (length=24)
'FROM_ROOT' => string 'i like tacos' (length=5)
'HTTP_Host' => string 'localhost' (length=9)
…
FROM_VHOST
環境変数がないのはなぜですか?FROM_ROOT
環境変数を見るのはなぜですか?試すべきことはほとんどありません:
1)これは、デフォルトをトリガーする可能性が高いホスト名としてlocalhostがセットアップされているか、/ etc/hostnameをチェックインするか、オプションでweb.localhostなどのFQDNを使用することが原因である可能性があります
2)試すべきもう1つのことは、上位の優先順位が高くなるため、上部ではなく下部にデフォルトを配置することです。
3)明白な修正は、localhostをvhostとして使用しないでください:)
私は自分の答えに自信がありませんが、試してみてください(もっと時間ができたらこれを再訪します}