Работа с субдоменами в Apache. Как оптимизировать VirtualHost?

Есть страшная задумка сделать такое:
listing >
  site.ru
    www/
      0/www/
      current > 0/
    work/
      0/www/
      1/www/
      current > 0/

site.ru > site.ru/www/current/www/
work.site.ru > site.ru/work/current/www/
current.work.site.ru > site.ru/work/current/www/
1.work.site.ru > site.ru/work/1/www/
0.1.work.site.ru > site.ru/work/1/0/

Подумал, что такую структуру легко поддерживать, даже скрипт написал для этого. К великому сожалению, нет возможности использовать nginx, только Apache, с которым я не очень-то знаком, попытки найти ответ на вопрос – "как сделать проще?" не увенчались успехом.

Вот на чем я остановился, к своему стыду и позору (неключевые параметры поскипаны):
<VirtualHost 1.2.3.4:56 >
  ServerName site.ru
  ServerAlias www.site.ru
  VirtualDocumentRoot /var/www/user/data/www/site.ru/www/current/www/
</VirtualHost>
 
<VirtualHost 1.2.3.4:56 >
  ServerName www.0.www.site.ru
  ServerAlias *.*.*.site.ru 
  VirtualDocumentRoot /var/www/user/data/www/site.ru/%-3/%-4/%-5/
</VirtualHost>
 
<VirtualHost 1.2.3.4:56 >
  ServerName 0.www.site.ru
  ServerAlias *.*.site.ru
  VirtualDocumentRoot /var/www/user/data/www/site.ru/%-3/%-4/www/
</VirtualHost>
 
<VirtualHost 1.2.3.4:56 >
  ServerName test.site.ru
  ServerAlias *.site.ru
  VirtualDocumentRoot /var/www/user/data/www/site.ru/%-3/current/www/
</VirtualHost>

Должно же быть более оптимальное решение, есть варианты?
  • Вопрос задан
  • 2536 просмотров
Пригласить эксперта
Ответы на вопрос 1
FacedSID
@FacedSID
Можно попробовать посмотреть в сторону ModRewrite. Создаете один VritualHost:
<VirtualHost 1.2.3.4:56 >
  ServerName site.ru
  ServerAlias *.site.ru
  DocumentRoot /var/www/user/data/www/site.ru/router/
</VirtualHost>

В site.ru/router/ лежит .htaccess с прописанными правилами перенаправления. На сколько сложной структура этого файла может получиться я не могу сказать, но работать во всяком случае должно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы