2012-11-29 2 views
3

하위 도메인에 대해 Play 프레임 워크 2.0.x에서 영구 리디렉션 301을 수행하는 방법을 알고 싶습니다. 예 : www.example.com/*은 example.com/*으로 리디렉션되었습니다. 누구든지 전에 이것을 시도 했습니까?Play 2.0.x로 영구 리디렉션

답변

8

Global objectintercept 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의에서/루트 앱/컨트롤러에서

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) 
    } 
}