代码之家  ›  专栏  ›  技术社区  ›  tster

使用RewriteProxy Deriactive的“屏蔽”外部URL链接

  •  3
  • tster  · 技术社区  · 16 年前

    我有一个简单的重写规则,它使用Helicon Isapi_Rewrite 3 RewriteProxy Deriactive写入外部域。

    示例:rewriteproxy blog http://blog.com

    但是,外部站点上的链接不会像我预期的那样被代理屏蔽。他们仍然指向 http://blog.com/link1 而不是 http://mysite/blog/link1 .

    有人能给我指出解决这个问题的正确方向吗?

    谢谢

    1 回复  |  直到 14 年前
        1
  •  3
  •   jtherkel    14 年前

    关于Helicon技术论坛的讨论也解决了同样的问题。 http://www.helicontech.com/forum/8460-rewrite_proxy_to_2d_machine.html

    第一个示例提供了 ISAPI重写2 但是线包括 ISAPI重写3 语法更详细。下面是他们版本3代码的一个改编版本。

    RewriteEngine on
    RewriteBase /
    RewriteRule ^blog$ http://mysite/blog/ [NC,R=301]
    RewriteProxy ^/blog(/.*)?$ http\://blog.com$1 [NC,U]
    

    (这是未测试的,因为我正在运行isapi rewrite 2。)请注意,当我试图反向代理“主”域下的另一个站点时,遇到了一些障碍。你也可能发现这些问题。

    1)非相对链接

    除非应用程序从一开始就被编码为假定反向代理,否则我发现它很可能会中断。一个简单的HTML页面使用所有的相关链接,如将工作。但是,通过包含此代码的反向代理服务HTML将映射到 http://mysite/page_from_the_root.html .isapi rewrite不知道拦截该请求,但如果用户的浏览器点击,它将代理内容。 http://mysite/blog/page_from_the_root.html

    2)饼干

    blog.com可能会从blog.com域写入cookie。通过mysite域提供服务的页面可能无法访问这些cookie,具体取决于用户的浏览器设置。

    3)javascript和Ajax

    4)SSL证书