2012-11-29 43 views
3

我想知道如何在Play framework 2.0.x中爲子域名永久重定向301。 例如:www.example.com/*重定向到example.com/*。任何人之前嘗試過?永久重定向與Play 2.0.x

回答

8

Global object將允許您intercept the request。出於顯而易見的原因,您應該使用GET請求(即針對SEO目的)執行此操作,但其他人(例如POST,PUT等)應從視圖的開頭正確創建。另一方面,如果它只是一些應用於生活生產的普通HTML頁面的應用程序,可以考慮在它的前面使用一些HTTP服務器 - 然後你可以用一些重寫規則來實現。

import play.GlobalSettings; 
import play.mvc.Action; 
import play.mvc.Http; 
import play.mvc.Result; 

import java.lang.reflect.Method; 

public class Global extends GlobalSettings { 

    @Override 
    public Action onRequest(final Http.Request request, Method method) { 
     if ("GET".equals(request.method()) && "www.example.com".equals(request.host())) { 
      return new Action.Simple() { 
       public Result call(Http.Context ctx) throws Throwable { 
        return movedPermanently("http://example.com" + request.path()); 
       } 
      }; 
     } 
     return super.onRequest(request, method); 
    } 
} 
5

在的conf/routes文件

GET/ controllers.Application.index(path = "") 
GET /*path controllers.Application.index(path) 

在應用/控制器/ Application.scala

object Application extends Controller { 
    def index(path: String) = Action { 
    Redirect("http://example.com/" + path, status = MOVED_PERMANENTLY) 
    } 
}