httpd-vhosts.conf
<Directory "/Volumes/DATA/websites">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
<Virtualhost *:80>
VirtualDocumentRoot "/Volumes/DATA/websites/default"
ServerName default.dev
UseCanonicalName Off
</Virtualhost>
<Virtualhost *:80>
VirtualDocumentRoot "/Volumes/DATA/websites/%1/www"
ServerAlias *.dev
UseCanonicalName Off
</Virtualhost>
現在、リクエストは次のように処理されています。
alpha.dev -> /Volumes/DATA/websites/alpha/www
beta.dev -> /Volumes/DATA/websites/beta/www
ワイルドカードドメインおよびサブドメインを持つことは可能ですか?例えば。:
alpha.dev -> /Volumes/DATA/websites/alpha/www
img.alpha.dev -> /Volumes/DATA/websites/alpha/img
cdn.alpha.dev -> /Volumes/DATA/websites/alpha/cdn
beta.dev -> /Volumes/DATA/websites/beta/www
docs.beta.dev -> /Volumes/DATA/websites/beta/docs
blog.beta.dev -> /Volumes/DATA/websites/beta/blog
このドキュメント によると、FQDNの複数の部分を使用できます。構成では、サブドメインに対応する%1
を使用しています。 FQDNがimg.alpha.dev
の場合、%1
はimg
になり、%2
はドメインに対応するため、alpha
と%0
になります。 img.alpha.dev
はFQDNに対応するため%0
に。
次の構成を実装します。
<VirtualHost *:80>
ServerAlias *
VirtualDocumentRoot /var/www/%2/%1
</VirtualHost>
/etc/httpd/conf/httpd.conf
で、mkdir -p /var/www/mydomain/info && echo helloworld > /var/www/mydomain/info/index.html
を実行し、httpd
を再起動して、http://info.mydomain.com/
に移動すると、helloworld
になります。
ただし、ServerAliasがさらに指定されている場合、例:
<VirtualHost *:80>
ServerAlias *.mydomain.com
VirtualDocumentRoot /var/www/%1
</VirtualHost>
mkdir -p /var/www/info && echo test2_param_one > /var/www/info/index.html
を実行し、info.mydomain.com
に移動すると、test2_param_one
になります。
<VirtualHost *:80>
ServerAlias *.mydomain.com
VirtualDocumentRoot /var/www/%0
</VirtualHost>
mkdir -p /var/www/info.mydomain.com && echo test2_param_all > /var/www/info.mydomain.com/index.html
を実行し、info.mydomain.com
に移動すると、test2_param_all
になります。
結論として、次のスニペットは機能します。
<VirtualHost *:80>
ServerAlias *.*.dev
VirtualDocumentRoot /var/www/%2/%1
</VirtualHost>
<VirtualHost *:80>
ServerAlias *.dev
VirtualDocumentRoot /var/www/%1/test
</VirtualHost>
mkdir -p /var/www/alpha/test && echo test5 > /var/www/alpha/test/index.html
、mkdir -p /var/www/alpha/img && echo test10 > /var/www/alpha/img/index.html
、http://alpha.dev/
に移動すると、test5
が返され、http://img.alpha.dev/
に移動するとtest10
が返されます。