2016-10-03 162 views
0

我正在尝试将请求从网站的子目录重定向到其根目录。我知道在IIS中有一个重写规则选项,但我不知道如何匹配URL并重写它。 另一个问题是,该网站有2个绑定,使用2个不同的主机名,其中一个与子目录相同。我需要他们两个重定向到子目录的请求到网站的根目录。IIS从子目录重定向到根

这里是可能的输入和它们各自的期望输出的列表:

http://host1/host2/abc --> http://host1/abc 
http://host1.domain.com/host2/abc --> http://host1.domain.com/abc 
http://host2/host2/abc --> http://host2/abc 
http://host2.domain.com/host2/abc --> http://host2.domain.com/abc 
http://anywebsitename/abc/host2/abc --> http://anywebsitename/abc/host2/abc 

注:

  • 'ABC' 可以是任意字符串(包括空字符串)。
  • 'host2'是一个字面常量。
  • “host2”子目录是根网站的子目录。

回答

0

这很简单,但您需要将其应用于IIS中的Host1(URL重写)。

<rule name="Rule to point host2-abc to host1-abc" stopProcessing="true"> 
    <match url="host2/abc" /> 
    <conditions logicalGrouping="MatchAll" rackAllCaptures="false" /> 
    <action type="Redirect" url="http://host1/abc" /> 
</rule> 

当这条规则被击中,(你已经在Host1区域的IIS),所以当时只是寻找主机2/ABC和重定向回父。同样的规则可以应用于你的所有例子。请标记此答案为正确的,如果它解决了您的问题。谢谢!

+0

请注意'abc'可以是任何字符串,它不是一个常量。如果客户端向http:// host1/host2/abc发送请求,我想将其重定向到http:// host1/abc,但是如果客户端向http:// host1/host2/xyz发送请求,我想要将其重定向到http:// host1/xyz。 此外,包含rackallcaptures属性(无法识别的属性'rackAllCaptures')时,我得到一个500.52响应。 – ovidiufelixb

+0

我改正它为'trackallcaptures'。 – ovidiufelixb