我在apache实例后面的tomcat中运行了一个应用程序。来自apache的请求通过mod_rewrite代理,因为这可以在.htaccess中配置,而且我无法访问vhost-configuration(甚至没有安装mod_jk)。
.htaccess如下所示:
RewriteRule ^/?my-app/(.*)$ http://localhost:8080/my-app/$1 [P]
Thymeleaf很好地将上下文名称附加到所有网址,并生成相对的内容,例如/my-app/relative/path
(因此没有http://hostname
- 部分)通过HTML,这在此设置中完美运行。
不幸的是,只要我使用Spring MVC重定向某些东西......
@RequestMapping("/redirect-to-relative-path")
public String redirect() {
return "redirect:/relative/path";
}
...用户被重定向到http://localhost:8080/my-app/relative/path
而非/my-app/relative/path
,这对外部用户无效。
此外,Spring Security会将尚未授权的用户重定向到http://localhost:8080/my-app/login
,而不仅仅是/my-app/login
。
我知道我可以使用完整的网址重定向到,但这应该是动态的。
使框架重定向到相对URL而不是附加主机名的最佳(spring-boot-)方法是什么? (......基本上就像Thymeleaf一样)
答案 0 :(得分:0)
协议标准规定重定向URL应该(必须?)是绝对的。
尝试在Tomcat配置中设置proxyName
和proxyPort
:
<Connector port="8080" ... proxyName="www.mycompany.com" proxyPort="80"/>
这些应该是Apache实例的公共属性。