首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在我的play应用程序中实现虚荣url?

问如何在我的play应用程序中实现虚荣url?
EN

Stack Overflow用户
提问于 2011-10-17 19:18:34
回答 3查看 272关注 0票数 1

我希望我的应用程序上的每个用户都有一个专用的http://user1.example.com格式的虚荣网址。如何在Play应用程序中实现此功能。谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-10-17 19:46:57

您可以使用虚拟主机。来自Play 1.1的发行说明:

路由文件现在支持主机匹配。如果必须从host参数中提取操作参数,则此选项非常有用。例如,对于SAAS应用程序,您可以使用:

代码语言:javascript
复制
GET    {client}.mysoftware.com/         Application.index

然后自动检索任何其他请求参数的客户端值:

代码语言:javascript
复制
public static void index(String client) {
    ...
}

这应该就行了。

票数 2
EN

Stack Overflow用户

发布于 2011-10-17 21:13:10

在控制器方法中,您可以从request.domain变量中获取域名。然后,您可以使用以下内容从域名中解析用户名或您想要使用的任何标识符:

代码语言:javascript
复制
int endIndex = request.domain.indexOf(".example.com");
if (endIndex <= 0) {
  return null;
}
String subdomain = request.domain.substring(0, endIndex);

如果您计划在多个方法中使用此子域检查,则可以创建一个具有@play.mvc.Before注释的单独的域检查方法,并将用户对象放入renderArgs,以便稍后在实际调用的控制器方法和模板中使用:

代码语言:javascript
复制
@Before
public static void resolveUserSubdomain() {
   ... Check subdomain and find user ...
   renderArgs.put("user", user);       
}

您还可以将此域检查器添加到单独的控制器类中,并通过使用类的@play.mvc.With注释将其包含在需要它的每个控制器中。

代码语言:javascript
复制
@With({ExampleDomainCheck.class})
public class ExampleController extends Controller {
    ... Controller methods ...
}
票数 2
EN

Stack Overflow用户

发布于 2012-02-20 21:27:13

我得到的是NULL值,域名一直更改为localhost:9000,直到我在apache configuration (httpd.conf)文件中使用ProxyPreserveHost on解决了这个问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7792990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档