使用Rewrite Proxy指令“屏蔽”外部URL链接

时间:2009-04-17 09:00:16

标签: .htaccess url-rewriting isapi

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

示例:RewriteProxy博客http://blog.com

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

有人能指出我解决方案的正确方向吗?

由于

1 个答案:

答案 0 :(得分:3)

Helicon Tech论坛上的讨论解决了同样的问题。 http://www.helicontech.com/forum/8460-rewrite_proxy_to_2d_machine.html

第一个示例提供 ISAPI Rewrite 2 的代码,但该主题在页面下方包含 ISAPI Rewrite 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)Cookie

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

3)JavaScript和AJAX

4)SSL证书