子项目中的尾部斜杠导致 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);
}
在我的路由文件中,我定义了以下路由:
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);
}