3

PlayFramework2.0.xでサブドメインに対して永続的なリダイレクト301を実行する方法を知りたいです。例:www.example.com/*はexample.com/*にリダイレクトされます。誰かが前にこれを試しましたか?

4

2 に答える 2

8

Globalオブジェクトを使用すると、リクエストをインターセプトできます。明らかな理由から、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);
    }
}
于 2012-11-29T22:06:41.977 に答える
5

conf/routesファイル内

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

apps / controllers/Application.scala内

object Application extends Controller {
  def index(path: String) = Action {
    Redirect("http://example.com/" + path, status = MOVED_PERMANENTLY)
  }
}
于 2012-11-29T20:09:33.987 に答える