Я только что купил себе новенький 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.