На моем локальном сервере разработки я установил тестовые сайты с таким доменом projectName.dev
Используя настройку ниже в моем конфигурационном файле Apache ...
NameVirtualHost *:80
<VirtualHost *:80>
VirtualDocumentRoot E:/Server/htdocs/projects/%1/www
ServerAlias *.dev
</VirtualHost>
Это позволяет мне получить доступ projectName.dev
в браузере, и он загрузит файлы из E:/Server/htdocs/projects/projectName/www/
Я хотел бы изменить это так, чтобы я мог также получить доступ к тем же папкам, если использую поддомен www
так что в моем примере projectName.dev
и www.projectName.dev
загрузит те же файлы.
Может ли кто-нибудь помочь мне в этом? Я не очень хорошо понимаю документацию
Вы можете попробовать следующее
NameVirtualHost *:80
<VirtualHost *:80>
VirtualDocumentRoot E:/Server/htdocs/projects/%-2/www
ServerName staging.dev
ServerAlias *.dev www.*.dev
</VirtualHost>
Вы можете использовать% -2, чтобы всегда получать имя «проекта». % -2 дает вам вторую часть URL-адреса с конца. Например, если URL-адрес будет http://project1.dev/ тогда корневой каталог будет E: / Server / htdocs / projects / project1 / www
Ответ ALex_hha правильный, проблема в% 1 в VirtualDocumentRoot. который заменяется используемым именем хоста. использование нескольких вариантов подстановочных знаков и VirtualDocumentRoot всегда сложно.
У вас есть 2 решения:
projectName.dev
.создать 2 конфига:
# www.project.dev format
<VirtualHost *:80>
VirtualDocumentRoot E:/Server/htdocs/projects/%2+/www
ServerName www.*.dev
</VirtualHost>
# project.dev format
<VirtualHost *:80>
VirtualDocumentRoot E:/Server/htdocs/projects/%1/www
ServerName *.dev
</VirtualHost>
% 2 + говорит, что вы хотите получить вторую и прямую часть имени хоста. Проверить Справочная страница mod_vhost для получения дополнительной информации
Вы не используете unix, но в unix вы также можете сделать символическую ссылку с имен www на имена проектов:
cd /srv/
for i in *; do
# bypass if not a directory
if [ ! -d "$i" ]; then continue; fi
# bypass if already created
if [ -e "www.$i" ]; then continue ; fi
# bypass if already a www
echo $i | fgrep -q "www" && continue
ln -s $i www.$i
done
Таким образом, имя проекта и www.projectname указывают на одно и то же место.