Создание поддомена подстановочных знаков с использованием Apache VirtualHost - программирование
Подтвердить что ты не робот

Создание поддомена подстановочных знаков с использованием 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>
4b9b3361

Ответ 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>

Порядок виртуальных хостов и их специфичность.