我有一個運行在apache實例後面的tomcat中的應用程序。來自Apache的請求通過mod_rewrite進行代理,因爲這可以在.htaccess中進行配置,並且我無法訪問vhost-configuration(甚至沒有安裝mod_jk)。如何使sprint引導+安全應用程序重定向主機相對
的.htaccess如下所示:
RewriteRule ^/?my-app/(.*)$ http://localhost:8080/my-app/$1 [P]
Thymeleaf很好地重視上下文名的所有URL,並直通出的HTML,它的工作產生相對的像/my-app/relative/path
(所以沒有http://hostname
-part)在這個設置完美。
不幸的是,只要我使用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重定向到,但這應該是動態的。
什麼是使框架重定向到相對URL而不是附加主機名的最佳方式(spring-boot-)? (...基本上像Thymeleaf這樣做)
謝謝!好點子。嘗試proxyName/-Port本地,並可以確認它的工作原理。不過,由於我不允許更改apache配置,因此我害怕在該目標框中,我也不允許更改server.xml。 Re:協議標準[Wikipedia](http://en.wikipedia.org/wiki/HTTP_location)指出:「過時的HTTP 1.1規範版本(IETF RFC 2616)需要一個完整的絕對URI重定向。[..]大多數流行的Web瀏覽器都容忍相對URL的傳遞,並因此允許更新的HTTP 1.1規範(IETF RFC 7231)[..]允許在位置標頭中使用相對URL。「 – 2014-12-08 10:26:02