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
что соответствует подобласти. Если полное доменное имя img.alpha.dev
затем %1
приведет к img
и, как %2
соответствует области, в которой он приводит alpha
и %0
к img.alpha.dev
так как %0
соответствует FQDN.
Реализация следующей конфигурации:
<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
.