用Apache作前端反向代理遇到的问题

本人现在用apache作前端代理时碰到一个非常棘手的问题,是这样的
我部门有一个公网域名www.company.com,服务器上开放80端口
Apache设置成 www.company.com/main作反向代理到内网的一台机器main.company.com:8080
这样页面上的html内容都能够正常获取,但是图片 js css之类的,由于html代码中都是这样写的
[code="html"]

[/code]
所以js获取地址就变成了 www.company.com/js/notes.js了。。。。然后什么东西都出不来了。
main.company.com:8080上面跑的是用spring mvc写的WEB应用,服务器是tomcat
请问各位大侠有知道怎么样解决的吗?

当然可以页面的每个连接地址前都插入www.company.com/main,但是这样工作量实在太大了,而且以后就和这个地址耦合了,有什么好点的方法吗?
先谢谢各位了

3个回答

这个相对地址的问题,在java web程序里面是个问题。

你可以这么做,写个Filter,设置个全局的basepath,然后在所有的js css之类的相对链接的地址前加个 ${base} .
不过这个basepath 是 http://url:port/projectName 的结构。后面的呢懂得。

还有种方法是在 /js/util.js 前面加项目名称 这样的 /projectName/js/util.js 但是必须注意,第一 projectName前面的/ 一定不能丢, 第二 这种做法是projectName不能修改

像这种资源的URL,还是依照ls的说法用一个变量${base}来记录basepath,管理起来比较方便。
如果lz不希望修改页面的代码,按照目前的情况来看,可以通过apache的重写规则把/js/*重写成/main/js/*
类似
RewriteRule ^/js/(.*)$ /main/js/$1 [PT]
不知这样是否能满足你的需求呢?

ls正解,来晚一步

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐