我希望我的应用程序上的每个用户都有一个专用的http://user1.example.com格式的虚荣网址。如何在Play应用程序中实现此功能。谢谢。
发布于 2011-10-17 19:46:57
您可以使用虚拟主机。来自Play 1.1的发行说明:
路由文件现在支持主机匹配。如果必须从host参数中提取操作参数,则此选项非常有用。例如,对于SAAS应用程序,您可以使用:
GET {client}.mysoftware.com/ Application.index然后自动检索任何其他请求参数的客户端值:
public static void index(String client) {
...
}这应该就行了。
发布于 2011-10-17 21:13:10
在控制器方法中,您可以从request.domain变量中获取域名。然后,您可以使用以下内容从域名中解析用户名或您想要使用的任何标识符:
int endIndex = request.domain.indexOf(".example.com");
if (endIndex <= 0) {
return null;
}
String subdomain = request.domain.substring(0, endIndex);如果您计划在多个方法中使用此子域检查,则可以创建一个具有@play.mvc.Before注释的单独的域检查方法,并将用户对象放入renderArgs,以便稍后在实际调用的控制器方法和模板中使用:
@Before
public static void resolveUserSubdomain() {
... Check subdomain and find user ...
renderArgs.put("user", user);
}您还可以将此域检查器添加到单独的控制器类中,并通过使用类的@play.mvc.With注释将其包含在需要它的每个控制器中。
@With({ExampleDomainCheck.class})
public class ExampleController extends Controller {
... Controller methods ...
}发布于 2012-02-20 21:27:13
我得到的是NULL值,域名一直更改为localhost:9000,直到我在apache configuration (httpd.conf)文件中使用ProxyPreserveHost on解决了这个问题
https://stackoverflow.com/questions/7792990
复制相似问题