0

我正在开发一个 grails 2.2.3 应用程序。这个应用程序有一个后端、一个营销网站和一些用户页面。

每个用户页面都应该在 username.domain.tld 上可用,营销站点在 domain.tld 和 www.domain.tld 上可用,后端在 domain.tld/backend 或 backend.domain.tld 上可用。

我已经实现了每个部分,但我的问题是我只有一个用于“/”的 URLMapping。如果我打电话给营销网站,我会得到营销视图作为回应。如果我调用 username.domain.tld 我也会得到营销网站作为响应,但我希望我得到 /user/page 作为响应。使用 username.domain.tld/user/page 我得到给定用户的正确响应(我有一个过滤器检查域名的 http 标头并将子域名设置为 params.username)。

我必须做什么才能使用户页面子域的“/”下的用户页面正常工作?我是否需要将我的应用程序拆分为不同的应用程序(插件架构)?我应该做这样的事情吗?http://techsravi.blogspot.de/2011/05/managing-multiple-domain-and-sub-domain.html或者我应该用 Apache2 做一些 url 重写吗?

什么是我的问题的最佳和最干净的解决方案?

4

3 回答 3

1

一种解决方案是将 Apache 配置与 ProxyPass 和 ProxyPassReverse 一起使用,以将某些 url “重定向”到 tomcat 中的另一个,并将其与不同的 VirtualHosts 混合。

<VirtualHost *:80>
    ServerName username.domain.tld
    ProxyPass / http://mycomputer:8080/user
    ProxyPassReverse / http://mycomputer:8080/user
</VirtualHost>
<VirtualHost *:80>
    ServerName www.domain.tld
    ProxyPass / http://mycomputer:8080/
    ProxyPassReverse / http://mycomputer:8080/
</VirtualHost>
<VirtualHost *:80>
    ServerName backend.domain.tld
    ProxyPass / http://mycomputer:8080/backend
    ProxyPassReverse / http://mycomputer:8080/backend
</VirtualHost>

我还没有完全测试过这个,但在其他类似的情况下它可以工作,我们在这里经常使用它......

于 2013-09-23T06:54:29.797 回答
0

一种解决方案是使用带有 java 过滤器的请求的包装器。

瓦珀

https://gist.github.com/pablomoretti/2267314d3d6ffe000430

筛选

https://gist.github.com/pablomoretti/24238ef030b8906c9e88

于 2013-09-23T14:23:25.787 回答
0

我找到了这个答案Grails and Subdomains可以解决您遇到的问题。

它具有每个用户名所需的子域解决方案。为此,它使用了过滤器。

另一篇文章http://fbflex.wordpress.com/2011/08/23/custom-theming-grails-applications/也有类似的解决方案,它使用不同的方法来解决他们的问题。其中之一是使用过滤器。

于 2014-03-16T07:49:52.843 回答