所以我在网络应用中如何生成网址时遇到了一些问题。
我的'demo'springboot app在我的服务器上部署为'demo.war'(扩展到'demo'文件夹)。我还有一个apache子域,配置为将demo.myserver.com映射到tomcat上的正确上下文:
<VirtualHost *:80>
ServerAdmin admin@myserver.com
ServerName demo.myserver.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / ajp://localhost:8009/demo/
ProxyPassReverse / ajp://localhost:8009/demo/
</VirtualHost>
到目前为止一切顺利。当我转到http://demo.myserver.com时,它将传递到tomcat中的'demo'上下文并加载页面。问题在于如何创建页面中的上下文相关URL。最终相关生成的HTML如下所示:
<form action="/demo/loadDataSet" method="get">
<button type="submit">Load next dataset</button>
</form>
百万美元模板位看起来像这样:
<form th:action="@{/loadDataSet}" method="get">
<button type="submit">Load next data set</button>
</form>
点击此按钮后,使用的网址为http://demo.myserver.com/demo/loadDataSet,因为我的'demo'子域中没有'demo'上下文的映射,因此失败了404。我想知道的是如何生成html所以它看起来像这样:
<form action="/loadDataSet" method="get">
<button type="submit">Load next dataset</button>
</form>
谢谢你们
答案 0 :(得分:1)
所以我不得不自己深入研究一下。事实证明,Thymeleafs首先不对这个问题负责。这是我的apache配置问题(我现在应该更改问题的标题吗?)毕竟。
这是我提出的apache的配置:
ProxyHTMLURLMap
此处的关键是/demo/
行,其中传递了HTML中/
的所有引用,并将其替换为ProxyHTMLURLMap
。 <Location>
只能使用/
标记,其中proxy_html
未标记标记的关闭,而是标记要映射的路径/上下文。在我的例子中,演示子域中的根。
proxy_html.conf
模块的配置也存在问题。无论出于何种原因# Here's the declaration for W3C HTML 4.01 and XHTML 1.0
ProxyHTMLLinks a href
ProxyHTMLLinks area href
ProxyHTMLLinks link href
ProxyHTMLLinks img src longdesc usemap
ProxyHTMLLinks object classid codebase data usemap
ProxyHTMLLinks q cite
ProxyHTMLLinks blockquote cite
ProxyHTMLLinks ins cite
ProxyHTMLLinks del cite
ProxyHTMLLinks form action
ProxyHTMLLinks input src usemap
ProxyHTMLLinks head profile
ProxyHTMLLinks base href
ProxyHTMLLinks script src for
# To support scripting events (with ProxyHTMLExtended On),
# you'll need to declare them too.
ProxyHTMLEvents onclick ondblclick onmousedown onmouseup \
onmouseover onmousemove onmouseout onkeypress \
onkeydown onkeyup onfocus onblur onload \
onunload onsubmit onreset onselect onchange
都丢失了,所以我必须自己创建它并将其添加到内部:
!important
答案 1 :(得分:0)
您是否尝试过添加
ProxyPreserveHost On
我并不熟悉,但似乎在这样的问题中建议:
另一种选择是这样的:
<form action="@{~/loadDataSet}" method="get">
<button type="submit">Load next dataset</button>
</form>
哪个是服务器相对网址。