IIS 7.5 URL重写循环

我有一个Web应用程序位于/ subdir1 / subdir2 /我想简化为用户通过添加一个子域sub.domain.com,但它保持循环。 我试图添加额外的规则,以防止它,但没有喜悦。

所以会发生什么是http://sub.domain.com/subdir1/subdir2/subdir1/subdir2/subdir1/subdir2/subdir1/subdir2/subdir1/subdir2/subdir1/subdir2/

我在web.config中的规则:

<rule name="subdomain" stopProcessing="true"> <match url="^(?!sub/)(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="sub.domain.com/subdir1/subdir2/" negate="true" /> <add input="{HTTP_HOST}" pattern="sub.domain.com" /> </conditions> <action type="Rewrite" url="subdir1/subdir2/" appendQueryString="true" /> </rule> 

有任何想法吗?

编辑:所以我真的想做的是让用户更容易。 现在他们必须inputwww.domain.com/subdir1/subdir2/来访问产品的login页面。 我想要做的是创build一个单独的子域,将重写到上面的链接。 而不是input长的url只需要去sub.domain.com,它会redirect或重写到www.domain.com/subdir1/subdir2/的位置。 我希望能让我的愿望更清楚些。

谢谢!

{HTTP_HOST}仅表示一个URI的主机部分:

http://[HTTP_HOST]/subdir/index.html

因此,你的第一个条件是不相关的(它永远不会评估错误)。

你想要的是{PATH_INFO}

 <add input="{PATH_INFO}" pattern="^/subdir1/subdir2" negate="true" /> 

有效地说:“如果URL的这个部分: http://sub.domain.com[PATH_INFO] : http://sub.domain.com[PATH_INFO]以”/ subdir1 / subdir2“开始,不要重写

如果您希望将/additional/path/to/content.html重写为/subdir1/subdir2/additional/path/to/content.html ,则还需要对该匹配进行反引用 :

 <action type="Rewrite" url="subdir1/subdir2/{R:0}" appendQueryString="true" />