如何使所有* .mysite.com子域命中我的servlet

时间:2013-07-30 07:26:21

标签: servlets subdomain wildcard-subdomain

我们有一个网络应用程序,比如mysite.com。

现在,用户可以创建像mysite.com/page/mypage这样的页面。这里的'mypage'是他/她创建的页面的唯一标识符。因此,每当请求mysite.com/page/mypage url时,它就会命中我们的'pagerequestservlet',它会提供所请求的页面数据。

现在我想要的是,每当用户点击mypage.mysite.com时,我们也会给出相同的页面相关信息(我们在mysite.com/page/mypage上提供)。这意味着,我需要让所有* .mysite.com请求由'pagerequestservlet'(或类似的servlet)处理。然后我可以解析请求URL,识别标识符'mypage'并返回数据。

现在我的问题是,如何使我的所有* .mysite.com请求都由'pagerequestservlet'处理?我使用GoDaddy作为我的域名注册商。

1 个答案:

答案 0 :(得分:0)

你必须设置你的DNS以允许这样的通配符,我不知道GoDaddy支持这个。

servlet是“DNS不可知的”,通常它不需要知道任何有关其域名的信息。这样就可以在不同的环境中部署相同的servlet,甚至可以使用不同的上下文根(example.com/a和example.com/b)。

您仍然可以通过ServletRequest#getServerName()访问域名。您可以实现一个处理子域部分的过滤器并重定向到正确的页面。但请注意 - 如果您在群集环境中运行或在负载均衡器后运行,则将返回mypage.example.com,但主机名servlet的名称已部署到。