Dropwizard url 重写
Dropwizard url rewriting
如何在 dropwizard 中启用 URL 重写?我需要将所有匹配特定模式的 url 重写为 /.
我正在使用 dropwizard 0.7.1 并且我正在尝试 运行 前端 html5 模式下的 Angular.js 应用程序,这需要 url 重写(参见 服务器端 部分下的 https://docs.angularjs.org/guide/$location)。
您可以像这样添加 Filter
:
environment.getApplicationContext().addFilter(
new FilterHolder(new Filter() {
@Override
public void init(FilterConfig filterConfig) throws ServletException {}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
if (shouldRedirect(request.getRequestURI())) {
response.sendRedirect("/");
} else {
chain.doFilter(req, res);
}
}
@Override
public void destroy() {}
}), "/*", EnumSet.allOf(DispatcherType.class));
你可以试试这个:http://www.tuckey.org/urlrewrite/
它与 mod_rewrite 非常相似。
对于简单的规则,在我看来最好的选择是使用 Dropwizard PathRedirect
RedirectBundle
.
- 将
dropwizard-redirect-bundle
添加到您的依赖项中
注册捆绑包:
@Override
public void initialize(Bootstrap<?> bootstrap) {
bootstrap.addBundle(new RedirectBundle(
new PathRedirect("/old", "/new")
));
}
它也支持正则表达式。
请注意,要与其他捆绑包一起使用,例如静态资产和 HTTPS 重定向,顺序很重要。应该是:
AssetsBundle
先
HttpsRedirect
秒
PathRedirect
最后
如何在 dropwizard 中启用 URL 重写?我需要将所有匹配特定模式的 url 重写为 /.
我正在使用 dropwizard 0.7.1 并且我正在尝试 运行 前端 html5 模式下的 Angular.js 应用程序,这需要 url 重写(参见 服务器端 部分下的 https://docs.angularjs.org/guide/$location)。
您可以像这样添加 Filter
:
environment.getApplicationContext().addFilter(
new FilterHolder(new Filter() {
@Override
public void init(FilterConfig filterConfig) throws ServletException {}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
if (shouldRedirect(request.getRequestURI())) {
response.sendRedirect("/");
} else {
chain.doFilter(req, res);
}
}
@Override
public void destroy() {}
}), "/*", EnumSet.allOf(DispatcherType.class));
你可以试试这个:http://www.tuckey.org/urlrewrite/
它与 mod_rewrite 非常相似。
对于简单的规则,在我看来最好的选择是使用 Dropwizard PathRedirect
RedirectBundle
.
- 将
dropwizard-redirect-bundle
添加到您的依赖项中 注册捆绑包:
@Override public void initialize(Bootstrap<?> bootstrap) { bootstrap.addBundle(new RedirectBundle( new PathRedirect("/old", "/new") )); }
它也支持正则表达式。
请注意,要与其他捆绑包一起使用,例如静态资产和 HTTPS 重定向,顺序很重要。应该是:
AssetsBundle
先HttpsRedirect
秒PathRedirect
最后