子项目中的尾部斜杠导致 404

Trailing slash in subprojects leads to 404

在我的路由文件中,我定义了以下路由:

GET     /something                           controllers.Application.something

如果我去mysite.com/something,它工作正常,如果我去mysite.com/something/,我得到一个404

一个解决方案是有两条路线,一条有斜线,一条没有斜线,但 Google 不喜欢这样。另一种方法是在控制器中进行某种重定向,但感觉有点尴尬。是否有一些本地 Play 解决方案可以帮助做到这一点?

嗯,作为开始,您可以看看 https://github.com/mariussoutier/play-trailing-slash - 一个旨在实现所需功能的项目。

你当然可以自己做。它会像这样:

将其放在 routes 文件的末尾(以便它作为不匹配路由的最后手段):

# match every route with slash at the end
GET     /*path/             controllers.Application.ownRedirect(path: String)

然后实现你Application.java中的方法:

public static Result ownRedirect(String path) {
    return movedPermanently("/" + path);
}