如何纠正(Wicket in)Tomcat at/myapp落后于/的Apache代理,该代理将不正确的重定向发送到/myapp/xxx而不是/xxx?
我已经在Tomcat中的/myapp上部署了我的Wicket应用程序,并使用如何纠正(Wicket in)Tomcat at/myapp落后于/的Apache代理,该代理将不正确的重定向发送到/myapp/xxx而不是/xxx?,apache,tomcat,servlets,wicket,Apache,Tomcat,Servlets,Wicket,我已经在Tomcat中的/myapp上部署了我的Wicket应用程序,并使用 ProxyPass / http://localhost:8080/myapp/ ProxyPassReverse / http://localhost:8080/myapp/ 现在Wicket错误地将用户重定向到/myapp/xxx而不是/xxx 有没有办法让Wicket(1.3.5)使用/作为我的根路径(而不是作为servlet部署上下文路径的/myapp) 编辑:以下链接中描述了一个解决方案,但它不适用于1.3
ProxyPass / http://localhost:8080/myapp/
ProxyPassReverse / http://localhost:8080/myapp/
现在Wicket错误地将用户重定向到/myapp/xxx而不是/xxx
有没有办法让Wicket(1.3.5)使用/作为我的根路径(而不是作为servlet部署上下文路径的/myapp)
编辑:以下链接中描述了一个解决方案,但它不适用于1.3.5版本:
我发现它:
编辑:问题是wicket使用带有ServletResponse#sendRedirect的相对路径重定向,Tomcat将它们转换为在开始时包含/myapp的绝对重定向。我试过mod_jk(AJP),但没有区别
在将重定向发送到客户端之前,应该有办法告诉proxy pass或mod jk重写重定向 我自己没有测试过,但是你看过mod_rewrite吗?这里有一些例子描述了你想做什么。我自己没有测试过,但是你看过mod_rewrite吗?这里有一些例子描述了您想要做什么。我没有找到直接的答案,但使用了mod jk的以下解决方法,我想也可以使用代理传递
RewriteRule /myapp/(.*) /$1 [L,R]
RewriteRule ^(.*) /myapp$1 [PT]
JkMount /myapp/* ajp13_worker
第一行将来自以/myapp/*开头的客户端的请求(由于Wicket/Tomcat/Apache重定向错误)重定向到/*
第二行重写从/*到/myapp/*的所有请求,第三行将它们发送到tomcat
对于代理通行证,第三行应替换为:
ProxyPass /myapp/ http://localhost:8080/myapp/
ProxyPassReverse /myapp/ http://localhost:8080/myapp/
我并没有找到直接的答案,但使用了mod jk的以下解决方法,我想也可以使用代理传递
RewriteRule /myapp/(.*) /$1 [L,R]
RewriteRule ^(.*) /myapp$1 [PT]
JkMount /myapp/* ajp13_worker
第一行将来自以/myapp/*开头的客户端的请求(由于Wicket/Tomcat/Apache重定向错误)重定向到/*
第二行重写从/*到/myapp/*的所有请求,第三行将它们发送到tomcat
对于代理通行证,第三行应替换为:
ProxyPass /myapp/ http://localhost:8080/myapp/
ProxyPassReverse /myapp/ http://localhost:8080/myapp/
您可能会发现此Tomcat文档非常有用:
它通过重定向匹配和修改重写解决了上述情况。您可能会发现这个Tomcat文档很有用:
它通过RedirectMatch和mod_rewrite解决了上述情况。是的,但我没有弄清楚如何重写重定向,或者如何告诉tomcat如何正确转换相对重定向URL。是的,但我没有弄清楚如何重写重定向,或者如何告诉tomcat如何正确转换相对重定向URL。使用mod_头重写应用程序可能返回的任何HTTP重定向。。。页眉编辑位置^([^/]*/[^/]*)?/(.*)$$1/myapp/$2在该页的下一部分是解决方案:2。使用mod_头重写应用程序可能返回的任何HTTP重定向。。。标题编辑位置^([^/]*/[^/]*)?/(.*)$$1/myapp/$2