heqichen
heqichen
2011-01-02 15:12
浏览 290
已采纳

用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条回答 默认 最新

  • jiangguangxian
    jiangguangxian 2011-01-02 16:35
    已采纳

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

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

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

    点赞 评论
  • changchanghust
    changchanghust 2011-01-02 19:34

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

    点赞 评论
  • beneo
    beneo 2011-01-02 19:50

    ls正解,来晚一步

    点赞 评论

相关推荐