如果我有2个域名和2个子域名:
examples.com
dogs.tutorials.com
cats.tutorials.com
我想从以下应用程序入口路径中将它们从一个Tomcat服务器作为Java应用程序提供:
localhost/app/examples/
localhost/app/tutorials/dogs/
localhost/app/tutorials/cats/
例如:
dogs.tutorials.com/search/?f=terrier
应翻译为:
/tutorials/dogs/search/?f=terrier
可以配置Apache或Tomcat来实现这一目标吗?怎么样? 我不确定这是否需要apache。这是一个java应用程序,因此apache不应该提供任何内容,只是可以用来将路径转换为域,我不想使用不同的端口,因为这将是一个应用程序。)
答案 0 :(得分:0)
这也需要从服务器实时重写响应,因为您的webapp创建的任何URL都会显示/tutorials/dogs/search/?f=terrier
,并且必须由Apache前端重写为dogs.tutorials.com/search/?f=terrier
。
更新:mod_rewrite和mod_substitution的组合应该能够实现。
出于性能和复杂性的原因,我不建议这样做。
但是,如果3个网址实际上是3个不同的网络应用,那么您可以使用virtual hosting执行此操作,其中3个网络应用是3个不同虚拟主机的ROOT
个应用。
答案 1 :(得分:0)
我解决了mod_proxy和mod_substitute:
----------------------
#required modules
LoadModule substitute_module modules/mod_substitute.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_module modules/mod_proxy.so
----------------------
<Location "/">
AddOutputFilterByType SUBSTITUTE text/html
</Location>
<VirtualHost *:80>
ServerName examples.com
ProxyPreserveHost On
ProxyPass / http://localhost:8080/TestWebApp/examples/
ProxyPassReverse / http://localhost:8080/TestWebApp/examples/
Substitute "s|/TestWebApp/examples||in"
</VirtualHost>
<VirtualHost *:80>
ServerName dogs.tutorials.com
ProxyPreserveHost On
ProxyPass / http://localhost:8080/TestWebApp/tutorials/dogs/
ProxyPassReverse / http://localhost:8080/TestWebApp/tutorials/dogs/
Substitute "s|/TestWebApp/tutorials/dogs||in"
</VirtualHost>
<VirtualHost *:80>
ServerName cats.tutorials.com
ProxyPreserveHost On
ProxyPass / http://localhost:8080/TestWebApp/tutorials/cats/
ProxyPassReverse / http://localhost:8080/TestWebApp/tutorials/cats/
Substitute "s|/TestWebApp/tutorials/cats||in"
</VirtualHost>
只有在响应页面中也存在非相对链接时才需要替换,因此它会替换它们(注意,替换每个匹配的字符串)。