我有一个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" />