Подача Apache статическое содержание согласно имени хоста

У меня есть кот, работающий позади апача и некоторого веб-приложения, работающего на нем. Мое приложение обрабатывает whitelabeling поэтому, если некоторый пользователь будет переходить к subnet1.myhost.com, он будет se некоторый веб-сайт и subnet2.myhost.com, он должен видеть некоторый другой веб-сайт

Как часть решения, апач должен обработать запросы CSS и перенаправить его к надлежащим местоположениям поэтому, если клиентское приложение из subnet1.myhost.com запрашивает, чтобы/styles/main.css апач перенаправил его согласно имени хоста, таким образом, это будет/subnet1/styles/main.css, Как я могу настроить такое поведение?

спасибо

-1
задан 8 September 2014 в 13:09
2 ответа

Если вам нужен единственный VirtualHost, вы можете сделать это с помощью mod_rewrite:

<VirtualHost :80>
   ServerName *.myhost.com

   RewriteEngine On
   RewriteCond %{HTTP_HOST} ^(.*)\.myhost\.com
   RewriteRule ^/styles/(.*)$ /%1/styles/$1 [L]
</VirtualHost>

Корень вашего документа должен иметь следующую структуру:

subnet1
   styles
       file1.css
       file2.css
subnet2
   styles
       file1.css
       file2.css
other_files_shared_across_domains

И ваш URL-адрес css должен выглядеть так:

http://subnet1.myhost.com/styles/file1.css
http://subnet1.myhost.com/styles/file2.css

http://subnet2.myhost.com/styles/file1.css
http://subnet2.myhost.com/styles/file2.css

Чтобы добавить новые поддомены, просто добавьте новые папки в папку DocumentRoot

1
ответ дан 5 December 2019 в 19:55

Это легко сделать, имея отдельный блок VirtualHost для каждого пользовательского сайта. Например

<VirtualHost :80>
  ServerName subnet1.myhost.com

  Alias /styles /subnet1/styles

  ...
</VirtualHost>

... представляет собой те же самые ключевые слова в каждом блоке, которые направляются в Tomcat. Вы можете включить сюда файл.

В Debian или Ubuntu вы поместите каждый из этих блоков в свой собственный файл в /etc/apache2/sites-available. Для Ubuntu 12.04 или более ранних версий файлы не имеют расширения .conf, но для более поздних версий Ubuntu имеют расширение.

Затем вы запускаете sudo a2ensite subnet1.myhost.com, чтобы включить сайт.

.
0
ответ дан 5 December 2019 в 19:55

Теги

Похожие вопросы