IIS 7.5 URL 重写循环

IIS 7.5 URL 重写循环

我有一个位于 /subdir1/subdir2/ 的 Web 应用程序,我想通过添加子域 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>

有任何想法吗?

编辑:所以我真正想做的是让用户更容易使用。现在他们必须输入 www.domain.com/subdir1/subdir2/ 才能访问产品的登录页面。我想要做的是创建一个可以重写到上述链接的子域。不用输入长 URL,只需转到 sub.domain.com,它就会重定向或重写到 www.domain.com/subdir1/subdir2/ 位置。我希望这能让我更清楚地明白我的愿望。

谢谢!

答案1

{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]以“/subdir1/subdir2”开头,则不要重写

如果你想要/additional/path/to/content.html重写为/subdir1/subdir2/additional/path/to/content.html,你需要一个反向引用比赛也是如此:

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

相关内容