2011-10-17 26 views

回答

2

您可以使用虛擬主機。從Play 1.1的發行說明:

路由文件現在支持主機匹配。如果必須從主機參數中提取操作參數,這可能很有用。例如,對於一個SaaS應用程序,你可以使用:

GET {client}.mysoftware.com/   Application.index 

,然後自動檢索客戶價值作爲任何其他請求參數:

public static void index(String client) { 
    ... 
} 

應該這樣做。

+0

我通過這兩種解決方案越來越空值在我的本地主機上使用httpd.conf中指定的虛擬主機:http://pastebin.com/2NBewFVF –

+0

@SameerSegal抱歉看不到錯誤。如果沒有虛擬主機,它可以工作嗎? –

+0

用vhost解決了它:ProxyPreserveHost –

2

在控制器方法中,您可以從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 ... 
} 
0

我得到空值和域名不停的變換爲localhost:9000,直到我解決它在Apache配置中使用ProxyPreserveHost on(httpd.conf文件)文件

相關問題