在我的路径文件的末尾,我放置了一个catch-all路由来捕获先前未捕获的请求并将其传递给我自己的路由器(以进行进一步处理):
GET /*nameUrl controllers.Application.router(nameUrl: String)
当然在该行之前还有许多其他路线。对我来说最大的惊喜是,即使以前的路线也被击中,每次都会被击中,所以如果我打开地址domain.tld/test
,它会在控制台中显示两个日志Test action hit!
和Custom router hit!
。有一个简化的样本:
public static Result test() {
Logger.debug("Test action hit!");
return ok();
}
public static Result router(String nameUrl) {
Logger.debug("Custom router hit!");
return ok();
}
路线(按此顺序)
GET /test controllers.Application.test
GET /*nameUrl controllers.Application.router(nameUrl: String)
我想得到什么:
我希望获得带有我的路由器的文章的网址,即domain.tld/category_1/article_title
之前没有任何前缀,当然如果我将所有内容更改为稳定版本,它将不再获得双击:
GET /news/*nameUrl controllers.Application.router(nameUrl: String)
domain.tld/news/category_1/article_title
但是我真的想避免/news/
段。这可能吗?
答案 0 :(得分:6)
我重复了它并且与Chromium(谷歌Chrome的核心)有同样的问题,但不是Firefox。
使用Global.java我分析了请求。
public class Global extends GlobalSettings {
@Override
public Action onRequest(Http.Request request, Method method) {
Logger.info("request-path: " + request.path());
return super.onRequest(request, method);
}
}
//output:
[info] application - request-path: /favicon.ico
对于每个GET /测试请求,Chromium都会尝试加载favicon。
因此,请在conf / routes中包含以下内容:
GET /favicon.ico controllers.Assets.at(path="/public", file="favicon.ico")