java - 使用 Play 2.0.x 永久重定向

标签 java scala playframework playframework-2.0

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

最佳答案

Global object将允许您intercept the request .出于显而易见的原因,您应该使用 GET 请求来执行此操作(即出于 SEO 目的),但其他请求(如 POST、PUT 等)应该从一开始就在您的 View 中正确创建。

另一方面,如果它只是一些为生活生产提供常见 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);
    }
}

关于java - 使用 Play 2.0.x 永久重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13632778/

相关文章:

Java Scanner nextLine() 方法未找到任何行

java - Firestore 无法将 java.lang.String 类型的值转换为日期

java - JVM 会阻止尾调用优化吗?

java - 在 Ubuntu 9.10 中安装 Play Framework

java - 用于读取 UTF-8 csv 和 excel 文件的字节顺序标记

java - Jenkins 在构建和构建后之间挂起

scala - foreach(println) 和 foreach(println()) 有什么区别?

scala - 从 TypeTag 和方法中获取精确的返回类型

playframework - Play! 中的分组形式错误框架

scala - 丢弃已在 Play Framework 2.x 上设置的 header