PlayFramework2.0.xでサブドメインに対して永続的なリダイレクト301を実行する方法を知りたいです。例:www.example.com/*はexample.com/*にリダイレクトされます。誰かが前にこれを試しましたか?
質問する
1910 次
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 に答える