在 JBOSS 中发布时出现问题,文件(图像、子页面)链接 HTML 使用绝对路径重定向到 / 而不是 APP
Problem pubishing in JBOSS, links to files (images, subpages) HTML with aboslute path redirect to / instead APP
我得到了一个 EAR 文件,我尝试部署并且部署正常,没有错误。问题如下:
所有 ccs 文件、图像、文件等都使用 HTML 文件中的绝对路径,(HTML 文件是通过外部程序生成的,因此更改为相对路径不是一个选项),所以样式没有被加载,其他页面的链接不起作用等。
一个清晰的例子:
我将耳朵部署在 "localhost:8080/app, the index.html file loads but inside the file, I try to use the link to the page2.html, and the path is localhost:8080/page2.html instead "localhost:8080/app/page2.html".
浏览器显示"the page cannot be loaded"
如何在不更改相对路径的情况下解决此问题?我有 application.xml 的上下文根 "app" 和 web.xml 的欢迎文件在 war 文件中 "index.html".
结构如下:
file.ear
元信息
file.war
网络信息
index.html
css 文件夹
pageX.html
求助
提前致谢。
将您的应用部署为 ROOT.war
如果您一直看到服务器欢迎页面,您可能还需要调整服务器配置以允许此操作
首先你需要了解,文件系统在网络中是如何工作的。
<link rel="stylesheet" href="slick.css"> // file present in same folder
<link rel="stylesheet" href="css/slick-theme.css"> // file present in css folder of current folder
<link rel="stylesheet" href="/css/slick-theme.css"> // file present in the css folder at the root directory of the current web
<link rel="stylesheet" href="../slick-theme.css"> // file present at one level up the current folder
由于您的所有文件路径都以 /
开头,服务器会尝试相对于根目录找到它。
您只需将您的应用部署为根应用,无需任何上下文根。
这需要两件事:
1)
<context-root>/</context-root>
2) 服务器级别的配置更改,删除默认内容映射,尝试查找
<location name="/" handler="welcome-content"/>
(可能因您的 jboss 版本而异)并对其进行评论。
附上您正在运行的应用程序的屏幕截图:
PS:从存储库中删除您的 EAR 或将其设为私有
如果您无法将应用程序绑定到 / 并且您无法更改应用程序中引用的文件路径,那么唯一的选择是在服务器前面使用代理,例如 nginx,因此您向代理发出请求并将请求传递给 http://appserver/app/
我得到了一个 EAR 文件,我尝试部署并且部署正常,没有错误。问题如下:
所有 ccs 文件、图像、文件等都使用 HTML 文件中的绝对路径,(HTML 文件是通过外部程序生成的,因此更改为相对路径不是一个选项),所以样式没有被加载,其他页面的链接不起作用等。
一个清晰的例子:
我将耳朵部署在 "localhost:8080/app, the index.html file loads but inside the file, I try to use the link to the page2.html, and the path is localhost:8080/page2.html instead "localhost:8080/app/page2.html".
浏览器显示"the page cannot be loaded"
如何在不更改相对路径的情况下解决此问题?我有 application.xml 的上下文根 "app" 和 web.xml 的欢迎文件在 war 文件中 "index.html".
结构如下:
file.ear 元信息 file.war 网络信息 index.html css 文件夹 pageX.html
求助
提前致谢。
将您的应用部署为 ROOT.war
如果您一直看到服务器欢迎页面,您可能还需要调整服务器配置以允许此操作
首先你需要了解,文件系统在网络中是如何工作的。
<link rel="stylesheet" href="slick.css"> // file present in same folder
<link rel="stylesheet" href="css/slick-theme.css"> // file present in css folder of current folder
<link rel="stylesheet" href="/css/slick-theme.css"> // file present in the css folder at the root directory of the current web
<link rel="stylesheet" href="../slick-theme.css"> // file present at one level up the current folder
由于您的所有文件路径都以 /
开头,服务器会尝试相对于根目录找到它。
您只需将您的应用部署为根应用,无需任何上下文根。
这需要两件事:
1)
<context-root>/</context-root>
2) 服务器级别的配置更改,删除默认内容映射,尝试查找
<location name="/" handler="welcome-content"/>
(可能因您的 jboss 版本而异)并对其进行评论。
附上您正在运行的应用程序的屏幕截图:
PS:从存储库中删除您的 EAR 或将其设为私有
如果您无法将应用程序绑定到 / 并且您无法更改应用程序中引用的文件路径,那么唯一的选择是在服务器前面使用代理,例如 nginx,因此您向代理发出请求并将请求传递给 http://appserver/app/