如何通过服务器在 jsp 网页中创建可移植 url

How to create portable urls in jsp webpages over servers

我正在将我的网站移至新服务器,原始服务器位于 header 和页脚中的 http://www.jthink.net , the new one is temporarily at https://test.jthink.net this has exposed the fact that my webpages have http://www.jthink.net 硬代码。

网站主要有jsp个页面,建议移到相关链接,但是这样不行,因为header每个页面都有

<%@ include file="/layout/inc/pagestart.jsp" %>

并且网页的层数可能不同,因此如果它们共享 header 相对路径,则仅适用于文件夹结构层数相同的页面。

http://www.jthink.net/songkong/en/index.jsp

http://www.jthink.net/songkong/index.jsp

所以我需要使用绝对链接而不是将其硬编码为 www.jthink.net 或 test.jthink.net 这样我就可以在其中任何一个上使用相同的页面。

所以我尝试了

<link rel="icon" href="<%=request.getServerName()%>/songkong/images/songkong32.png" type="image/png" />

但是解决了

<link rel="icon" href="test.jthink.net/songkong/images/songkong32.png" type="image/png" />

没用

于是我尝试了

<link rel="icon" href="https://<%=request.getServerName()%>/songkong/images/songkong32.png" type="image/png" />

但这是对 https 的硬编码,因此无法在现有站点上运行。

请问正确的做法是什么?

解决方案是使用 服务器相关链接 ,如果 url 以单个 / 开头,解析为当前服务器的协议和名称

例如 如果在页面 http://www.example.net/index.jsp 上,/ 的 url 表示 http ://www.example.net/,而如果在页面 https://www.example.net/index.jsp / 的 url 表示 https://www.example.net/

我认为注意这里与相对链接的区别很重要,因为它很混乱。之前有人建议我使用相对链接,但我认为相对链接是以 ..(意思是父目录)或 . 开头的链接(意思是当前目录)和 unix 一样,这些不好,因为根据你在服务器

中所在的页面,可以获得不同的结果

例如

如果在第 http://www.example.net/index.jsp a url of .. would mean http://www.example.net/, whereas if on page http://www.example.net/test/index.jsp a url of .. would mean http://www.example.net/test

页上