使用Play 2.0.x进行永久重定向

时间:2012-11-29 18:59:14

标签: java scala playframework playframework-2.0

我想知道如何在Play框架2.0.x中为子域进行永久重定向301。 例如:www.example.com/*重定向到example.com/*。有人试过这个吗?

2 个答案:

答案 0 :(得分:8)

Global object将允许您intercept the request。出于显而易见的原因,您应该使用GET请求(即出于搜索引擎优化目的),但其他人,如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);
    }
}

答案 1 :(得分: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)
  }
}