Переменная / Динамическая / REGEX Virtualhost в Apache? - PullRequest
1 голос
/ 10 августа 2011

Просто вопрос со стеной сегодня.Можно ли изменить DocumentRoot виртуального хоста в зависимости от запрошенного субдомена, например так?

<VirtualHost *>
   ServerName ^VARIABLE$.example.com
   DocumentRoot ~/Sites/^VARIABLE$
</VirtualHost>

1 Ответ

2 голосов
/ 10 августа 2011

Да, это возможно:


Шаг 1: Настройка подстановочного знака DNS

Вы должны добавить запись A , которая указывает на IP-адрес вашего сервера:

*.example.com.    IN      A       192.168.1.1

Шаг 2: настройка apache VirtualHost

<VirtualHost *>
        ServerName  www.example.com
        ServerAlias *.example.com

        DirectoryIndex index.html 
        DocumentRoot /home/www/www.example.com/htdocs
    ....
</VirtualHost>

Обратите внимание на важную строку: ServerAlias *.example.com. Это сообщит Apache, что любой хост с суффиксом .example.com будет соответствовать этому виртуальному хосту.

Шаг 3: Настройка правил перезаписи

Вы должны добавить эти строки в файл .htaccess, расположенный в корневой веб-папке (например, /home/www/www.example.com/htdocs):

RewriteEngine on
RewriteCond %{http_host} .
RewriteCond %{http_host} !^www.example.com [NC]
RewriteCond %{http_host} ^([^.]+)\.example.com [NC]
RewriteRule ^(.*) http://www.example.com/%1/ [R=301,L,QSA] 

Таким образом, запрос на foo.example.com перенаправит посетителей на example.com/foo и так далее. Удачи.


(Ссылка: http://www.debian -administration.org / Articles / 358 )
...