我想知道如何在 Play framework 2.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)
在应用程序/控制器/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 回答