Создание поддомена подстановочных знаков с использованием Apache VirtualHost
Я хочу иметь такую ситуацию:
-
если пользовательский запрос использует этот URL-адрес: example.com
или www.example.com
,
пользователь увидит index.php
в этом каталоге /home/admin1/public_html/
-
но когда пользовательский запрос использует другой поддомен (подстановочный знак), например: freediscount.example.com
, пользователь увидит index.php
по этому пути: /home/admin1/public_html/userweb/freediscount.example.com
техническая поддержка на моем хостинге предлагает мне использовать этот метод: http://www.wiredstudios.com/php-programming/setting-up-wildcard-dns-for-subdomains-on-cpanel.html
основанный на этом учебнике, PHP имеет новое задание... перенаправить в определенную папку при запросе пользователя с субдоменом. Мне не нравится этот метод. для меня было бы лучше, если Apache справится с этим.
почти близко к тому, что мне нужно, это этот метод: Virtualhost для поддомена подстановочных знаков и статического субдомена
но у меня проблема с настройкой VirtualHost
, как правильно создать VirtualHost
для этой ситуации?
вот что я сделал, но не работал:
## I think this one is for www or without www, automatically generated with WHM
<VirtualHost xx.xx.xx.xx:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /home/admin1/public_html
</VirtualHost>
## Here what I'm trying to add
<VirtualHost xx.xx.xx.xx:80>
ServerName example.com
DocumentRoot /home/admin1/public_html/userweb/*
</VirtualHost>
Ответы
Ответ 1
Поддомены подстановочных карт, безусловно, возможны с использованием виртуальных хостов Apache.
У меня были в основном те же требования и удалось заставить его работать с модулем Apache mod_vhost_alias.so
. Попробуйте в файле http-vhosts.conf
:
DocumentRoot "/home/admin1/public_html/userweb/"
<Directory "/home/admin1/public_html/userweb/">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:80>
DocumentRoot /home/admin1/public_html/
ServerName www.example.com
</VirtualHost>
<VirtualHost *:80>
VirtualDocumentRoot /home/admin1/public_html/userweb/%1.example.com/
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /home/admin1/public_html/
ServerName example.com
</VirtualHost>
Обратите внимание, что я не тестировал это, но это довольно близко к решению, которое сработало для меня.
Подробная информация о моем решении приведена здесь:
http://www.calcatraz.com/blog/wildcard-subdomains-in-apache-1422
Ответ 2
Попробуйте следующее:
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /home/admin1/public_html/
ServerName www.example.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /home/admin1/public_html/userweb/freediscount.example.com
ServerName other.example.com
ServerAlias *.example.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /home/admin1/public_html/
ServerName example.com
</VirtualHost>
Порядок виртуальных хостов и их специфичность.