URL使用IIS将子目录重写到其他域

时间:2014-03-13 22:40:55

标签: iis url-rewriting isapi-rewrite arr

目标#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 Rewrite& 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视频的大多数,并阅读了他的文章。我觉得我正在跳过某些东西。

2 个答案:

答案 0 :(得分:3)

使用IIS7和IIS8上的URL REWRITE进行计算。 (我今天将在IIS6上的ISAPI REWRITE上应用此功能,并将更新我的帖子。)


ON WEB1 SERVER (在IIS7上):

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

  1. 在INBOUND RULES下,选择BLANK RULE
  2. 给它起一个名字,你想要的任何名字(即" Subdirectory Rewrite")
  3. 在PATTERN下,输入 ^ web2 $ | ^ web2 /(.*)
  4. 在条件下,单击“添加”
  5. 条件输入: {HTTP_HOST}
  6. 模式: ^ web1.com $
  7. 在“操作”下,选择“操作类型”:重写
  8. 重写网址: http://www.web2.com/ {R:1}
  9. 点击“应用”

  10. ON WEB1 SERVER (在IIS6上):

    使用Helicon ISAPI_Rewrite 3 paid version

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

    3. ON WEB2 SERVER (在IIS8上):

      在网站级别,添加OUTBOUND RULE。

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

        PS:感谢Scott Forsyth的灵感。

答案 1 :(得分:0)

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