3

目标 #1:www.web1.com/web2 需要指向 www.web2.com

目标 #2:用户必须始终查看 www.web1.com/web2 以及 web2 中的路径和查询

例如:www.web1.com/web2/login 或 www.web1.com/web2/?query=string

www.web1.com 在 IIS6 上(使用 ISAPI 重写) www.web2.com 在 IIS8 上(使用 URL 重写和 ARR)

有人可以指导我该怎么做吗?

========================

在 web1 上,我使用了以下内容:

RewriteCond %{HTTP_HOST} ^www.web1.com$

RewriteRule ^/web2/?$ www.web2.com [NC,P,R=301,L]

在 web2 上,我设置了一个 ARR 服务器场并创建了一个入站规则。

但是,当我拉取 www.web1.com/web2 时,浏览器上的 URL 仍然显示为 www.web2.com。我玩过使用 REVERSE PROXY 和 OUTBOUND。我看过大部分Scott Forsyth 的视频并阅读他的文章。我觉得我在跳过一些东西。

4

2 回答 2

3

在 IIS7 和 IIS8 上使用 URL REWRITE 解决了这个问题。(我今天将在 IIS6 上的 ISAPI REWRITE 上应用它,并将更新我的帖子。)


在 WEB1 服务器上(在 IIS7 上):

在站点级别,添加入站规则。(对于新手,运行 IIS 并单击您的我的 WEB1 版本。从右侧图标列表中双击 URL REWRITE。从右侧列表中单击 ADD RULE。)

  1. 在入站规则下,选择空白规则
  2. 给它一个名字,你想要的任何名字(即,“子目录重写”)
  3. 在模式下,键入^web2$|^web2/(.*)
  4. 在条件下,单击添加
  5. 条件输入:{HTTP_HOST}
  6. 模式:^web1.com$
  7. 在操作下,选择操作类型:重写
  8. 重写网址:http ://www.web2.com/ {R:1}
  9. 点击应用

在 WEB1 服务器上(在 IIS6 上):

使用Helicon ISAPI_Rewrite 3 付费版

  1. RewriteCond 主机:(.*)
  2. RewriteRule ^/web2(/.*)?$ http://www.web1.com/web2 $1 [P]

在 WEB2服务器上(在 IIS8 上):

在站点级别,添加 OUTBOUND RULE。

  1. 在出站规则下,选择空白规则
  2. 给它一个名字,你想要的任何名字(即“重写路径”)
  3. 在前提条件下,选择创建新前提条件
  4. 名称:isHTHML
  5. 点击添加
  6. 条件输入:{RESPONSE_CONTENT_TYPE}
  7. 模式:^text/html
  8. 在 MATCH 下,选中“匹配内容”下的所有复选框
  9. 模式:^/(.*)
  10. 在 ACTION 下,操作类型:重写
  11. 值:/web2/{R:1}
  12. 点击应用

    PS:感谢 Scott Forsyth 的灵感。

于 2014-03-14T16:24:03.360 回答
-1

我想说“P”和“R=301”有点争议。这就像“我是约翰和玛丽”。使用 [P] 创建一个简单的代理规则。

于 2014-03-14T13:02:11.437 回答