我在 apache 后面运行了 tomcat,并在其上运行了一些 Web 应用程序。我的应用程序处理白标,因此如果某个用户访问 subnet1.myhost.com,他将看到某个网站,而访问 subnet2.myhost.com,他将看到另一个网站
作为解决方案的一部分,apache 应该处理 css 请求并将其重定向到正确的位置,因此如果来自 subnet1.myhost.com 的客户端应用程序请求 /styles/main.css,apache 应该根据主机名将其重定向,因此它将是 /subnet1/styles/main.css 我该如何配置这种行为?
谢谢
答案1
如果你想要一个 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
你的 css URL 看起来应该是这样的:
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 文件夹即可
答案2
通过为每个自定义站点设置不同的 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
以启用该站点。