В моем Apache (Xampp) httpd-vhosts.conf
файл, который я добавил этот виртуальный хост. Он позволяет мне использовать имена подстановочных знаков, например testserver1.dev
и testserver2.dev
Мне просто нужно обязательно добавить имя в свой файл Windows Hosts.
<VirtualHost *:80>
VirtualDocumentRoot E:/Server/htdocs/projects/%1/www
ServerAlias *.dev
</VirtualHost>
Но я бы хотел добавить к этой функциональности и заставить ее работать, если имя начинается с www
так testserver1.dev
также будет работать как www.testserver1.dev
Если бы я попытался получить доступ к этому URL-адресу, он будет выглядеть в папке с именем www.testserver1
вместо папки testserver1
Избавьтесь от ServerAlias и измените% 1 на% -2.
<VirtualHost *:80>
VirtualDocumentRoot E:/Server/htdocs/projects/%-2/www
</VirtualHost>
Как объяснено в Раздел «Интерполяция имен каталогов» документации mod_vhost_alias, то %-2
скажет Apache посмотреть на вторую часть из последней части имени.
В следующем разделе связанного документа есть примеры, один из которых следующий:
VirtualDocumentRoot "/usr/local/apache/vhosts/%-2.0.%-1.0"
Что позволит www.example.com
так же как www.sub.example.com
или example.com
для обслуживания файлов из /usr/local/apache/vhosts/example.com
. Это происходит следующим образом:
%-2.0 # The second from the last part of the name with a zero-length substring.
# The .0 is necessary as we need to specify a literal period next and don't
# want the parser to confuse it with a substring specification.
. # a literal period
%-1.0 # the last part of the name with a zero-length substring. The .0 should be
# optional here as there's nothing left to cause confusion, but it doesn't
# hurt anything to have it.