我正在使用带有CentOS 7的Linux服务器,安装了mod jk的Apache 2.4.23。 mod jk已正确安装和配置,打开了网站,但没有加载该网站的CSS。
我也尝试了各种重写规则,但问题仍然存在。
下面是我在httpd.conf中用于mod_jk
的配置RewriteRule ^ /(。*)$ / test / $ 1 [PT]
JkMount / * test
worker.properties:
worker.list=test
worker.test.type=ajp13
worker.test.host=localhost
worker.test.port=8009
所有mod_jk配置都在httpd.conf中,CSS在Tomcat中
Tomcat的上下文文件中没有任何更改。
server.xml中
shutdown port = 8005
http port = 8080
ajp port = 8009
由于
答案 0 :(得分:1)
您无法访问自己的css,因为链接不正确。
根据您的项目结构,您的css位于:project_root/webapp/resources/style.css
,访问权限的链接应为http://[host:port]/resources/style.css。
而不是这样,您输入的css网址为:
“$ {pageContext.request.contextPath} /资源/的 CSS 强> /style.css”
应该是:
“$ {pageContext.request.contextPath} /resources/style.css”
如果您在css链接中更改此参数,我打赌它将按预期返回。
其他方面是直接从Apache Httpd(或任何其他Web服务器)而不是Tomcat提供css,js和其他静态内容的方便与否。它有不同的oppinions,特别是如果你向Tomcat提供Apache APR库。我个人更喜欢它。在这种情况下,一旦您通过别名将静态元素复制/移动/重定向到Apache,您的JKMount策略应该更复杂。这可能是一种方法:
JkMount /test/* test
JkUnMount /test/resources/* test
修改强>
我一直在寻找你的配置,我终于意识到问题实际上是你正在使用的RewriteRule。
RewriteRule ^/(.*)$ /test/$1 [PT]
实际做的是重写对该主机(或虚拟主机)的每个请求,以便在请求路径的开头添加额外的/test/
上下文路径。
第一个请求可以正常工作,因此需要http://server.com/请求并将其重写为http://server.com/test/。之后,JKMount将请求重定向到tomcat,因为它将每个mach重定向到 test worker,当你应用通用表达式(/ *)时,每个请求都会被重定向到tomcat。
所以,第一个请求是这样的:
http://server.com/ > http://server.com/test/
但是,Tomcat应用程序中的任何后续资源或链接(包括css资源)实际上都会正确设置/test/
上下文(至少是您尝试加载的css)。因此,css链接/test/resources/css/style.css
也会重新编辑,并以这种方式结束:/test/test/resources/css/style.css
这是一个不正确的网址。
现在,为了避免它,我的建议是将你的RewriteRule改为仅管理对root元素的调用,这样:
RewriteRule ^/$ /test/ [PT]
如果您这样做,只需将http://server.com/的初始请求重写为http://server.com/test,以及任何后续资源,链接或表单操作,因为整个应用程序由spring mvc管理,将在uri
中具有/test
上下文路径映射
答案 1 :(得分:0)
在apache服务器中添加所有html,图像和css文件夹,在tomcat / webapps / project / WEB-INF / classes中添加java类,所有这些文件都将正常运行
答案 2 :(得分:0)