【发布时间】:2016-01-12 12:24:14
【问题描述】:
我正在尝试创建一个重定向规则来处理以下地址:
http://localhost/authorize/facebook?code=123456
到
http://localhost/authorize/facebook/123456
为了完成这个要求,我正在使用 Jetty 和 Jetty Rewrite 的版本 9.3.6.v20151106。在我的代码中,我使用以下配置:
// Rewrite.
RewriteHandler rewriteHandler = new RewriteHandler();
rewriteHandler.setOriginalPathAttribute("requestedPath");
// Rewrite regex rule.
RewriteRegexRule rewriteRegexRule = new RewriteRegexRule();
rewriteRegexRule.setRegex("/authorize/([^\\?]+)\\?code=(.*)$");
rewriteRegexRule.setReplacement("/authorize/$1/$2");
rewriteHandler.addRule(rewriteRegexRule);
// Rewrite handler.
try {
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[]{rewriteHandler, webAppContextHandler});
jettyServer.setHandler(handlers);
但是,尽管它是一个有效且正确的正则表达式模式,但在与 Jetty Rewrite 一起使用时却不匹配。我尝试逐步创建此模式,但当我在模式中包含 \\? 时,它总是停止工作。
有人可以帮我解决这条规则吗?
【问题讨论】:
标签: java regex url-rewriting embedded-jetty jetty-9