我有一个java应用程序响应多个域,并为每个域使用特定的apache虚拟主机。这是因为Apache比tomcat更快,以提供静态资源。
需要在运行时执行此操作,而无需重新启动apache配置。 要执行此操作,我正在使用VirtualDocumentRoot指令,如下所述:
AddType text/html .html .shtml
AddOutputFilter INCLUDES .html .shtml
NameVirtualHost *:80
UseCanonicalName Off
<VirtualHost *:80>
ServerName domain.com
ServerAlias *
# Define virtual host directory, using entire domain
VirtualDocumentRoot /path/to/whosts/%0
# Define directory access
<Directory "/path/to/whosts/">
Options -Indexes MultiViews +Includes
Order allow,deny
Allow from all
</Directory>
# Define Java Proxies
<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
# Allow Libs (static resources) to access apache directly
ProxyPass /libs !
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
</VirtualHost>
这不行,因为如果我尝试访问www.domain.com,则与访问domain.com不同。
您认为注册www.domain.com至domain.com的符号链接是个好主意吗???
还有其他办法吗?阿帕奇管理我真的很穷......
非常感谢!
Ciao,Davide。
答案 0 :(得分:2)
在进行与此类似的配置时,我经常使用符号链接将多个域链接到同一个webroot,在该解决方案中没有明显的伤害,因此绝对没有理由回避它。
答案 1 :(得分:0)
一种好方法是确定哪种类型的网址应该是规范网址,并使用mod_rewrite
将网址重定向到它 - 例如,将请求匹配到domain.com
并将其重定向到{{ 1}}。有很多关于如何在网上提供的教程,您应该可以轻松找到它。
在我的头顶,你可以使用类似的东西:
www.domain.com
但是,由于硬编码RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.$ [NC]
RewriteRule ^(.*) http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
,如果您使用SSL,则会导致问题。我认为您可以将RewriteRule行更改为以下内容以避免这种情况:
http://