У меня есть кот, работающий позади апача и некоторого веб-приложения, работающего на нем. Мое приложение обрабатывает whitelabeling поэтому, если некоторый пользователь будет переходить к subnet1.myhost.com, он будет se некоторый веб-сайт и subnet2.myhost.com, он должен видеть некоторый другой веб-сайт
Как часть решения, апач должен обработать запросы CSS и перенаправить его к надлежащим местоположениям поэтому, если клиентское приложение из subnet1.myhost.com запрашивает, чтобы/styles/main.css апач перенаправил его согласно имени хоста, таким образом, это будет/subnet1/styles/main.css, Как я могу настроить такое поведение?
спасибо
Если вам нужен единственный 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
Это легко сделать, имея отдельный блок 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
, чтобы включить сайт.