Динамически настраиваемый виртуальный хостинг - PullRequest
2 голосов
/ 08 января 2011

Helo!Я хотел бы подготовить динамический виртуальный хост для всех поддоменов, которые будут созданы в будущем с использованием mod_rewrite.Все субдомены будут настроены одинаково, поэтому я подумал об использовании динамической конфигурации VH.Я хочу, чтобы корнем моего документа для каждого субдомена был /home/user/public_html/subdomainName.

Я пробовал со следующей конфигурацией, но не смог:

<VirtualHost xxx.xxx.xxx.xxx:80>
    # get the server name from the Host: header
    UseCanonicalName Off

    <Directory /home/user/public_html/>
    # ExecCGI is needed here because we can't force
    # CGI execution in the way that ScriptAlias does
      Options FollowSymLinks ExecCGI
    </Directory>

    RewriteEngine On

    # a ServerName derived from a Host: header may be any case at all
    RewriteMap lowercase int:tolower

    #rule that is suposed to set document root of virtual host!??? 
    RewriteRule ^([a-z-]+)\.domain\.com/?(.*) /home/user/public_html/$1/$2

</VirtualHost>

Правилочто-то кажется неправильным, и это не относится.Я никогда не работал с динамическим VH раньше, поэтому я понятия не имею, где я не прав ...

Ответы [ 3 ]

1 голос
/ 09 января 2011

Это потребность многих людей до вас. Так что есть модуль Apache, который может сделать это для вас mod_vhost_alias http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html

Обеспечивает динамическую настройку массовый виртуальный хостинг

0 голосов
/ 08 января 2011

С RewriteRule вы не можете получить доступ к имени домена. Также используйте RewriteCond для этой части и используйте% 1 и т. Д. Для обратной ссылки.

RewriteCond %{HTTP_HOST} ^([a-z-]+)\.domain\.com$ [NC]
RewriteRule (.*) %1/$1

Единственная проблема заключается в том, что это создаст цикл продолжения с добавлением строки субдомена. Поэтому я обычно создаю отдельную папку для поддоменов, например, «поддомены»

RewriteRule ^subdomains - [L]
RewriteCond %{HTTP_HOST} ^([a-z-]+)\.domain\.com$ [NC]
RewriteRule (.*) subdomains/%1/$1
0 голосов
/ 08 января 2011

вместо динамических виртуальных хостов, вы также можете сделать это с помощью подстановочного знака dns, что означает настройку {any} .yourdomain.tld для указания на ваш сервер.

Это также даст вам один и тот же корень документа для каждого домена,

обратите внимание, что вам нужно будет добавить ServerAlias *.yourdomain.tld к записи виртуального хоста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...