Назад | Перейти на главную страницу

Автоматический поддомен Apache2 VirtualHost

Я только что купил себе новенький Linux-сервер (Debian Stable). Сервер в основном используется для веб-хостинга и веб-разработки.

Я установил Apache2, PHP5 и MySQL, и все работает.

Я организую свои сайты по следующему пути: /var/www/username/website.com

Теперь я не хочу, чтобы сервер автоматически "создавал" / распознавал поддомены.

/var/www/username/sub.website.com> http://sub.website.com

Я не хочу, чтобы это происходило автоматически. Как это сделать?

Лучший способ сделать это - разместить ссылки на все сайты в определенном каталоге и сделать что-то вроде этого:

<VirtualHost *:80>
        RewriteEngine On
        RewriteMap lowercase int:tolower
        # if already rewitten and we have the right path, stop right here
        RewriteRule ^(/where/your/sites/are/[^/]+/.*)$ $1 [L]
        RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
        RewriteRule ^(www\.)?([^/]+)/(.*)$ /where/your/sites/are/$2/$3 [L,E=VHOST_ROOT:/where/your/sites/are/$2/]
</VirtualHost>

Ты можешь использовать массовый виртуальный хостинг. В вашем случае вы не сможете использовать его в основной конфигурации apache из-за '/ username /' в пути, но вы можете создать виртуальный хост для каждого пользователя, а затем использовать массовый виртуальный хостинг на виртуальном хосте.

Пример:

<VirtualHost *:80>
ServerName domain.tld
ServerAlias *.domain.tld
VirtualDocumentRoot /var/www/user1/%0/
</VirtualHost>

<VirtualHost *:80>
ServerName domain2.tld
ServerAlias *.domain2.tld
VirtualDocumentRoot /var/www/user2/%0/
</VirtualHost>

...

С помощью мода rewrite вы можете заставить domain.tld перезаписать, чтобы он указывал на каталог www.