IIS 10中URL重写的问题

时间:2017-07-10 21:13:29

标签: url iis url-rewriting

我将首先说明我不懂如何使用正则表达式,并且我没有时间在不久的将来学习它。 我已经阅读了一篇文章,解释了如何正确地完成我的需要,但是当我尝试这样做时,它根本不起作用并完全打破了网页(404错误)。 这是文章:IIS url rewrite role except some urls

我的问题是,当我在GUI中创建重写时,即使我输入网站并使用“完全匹配”而不是“正则表达式”,它也不会重写URL应该(或者我认为应该这样,我显然是错的)。

我想做什么:

  • 如果客户转到myweb.site.com,然后重定向到myweb.site.com/login
  • 直接转到myweb.site.com/thispage.aspx
  • 除外

以下是配置文件中的剪辑:

<rules>
            <rule name="Redirect to Client Login on root lookup" enabled="true" patternSyntax="ExactMatch" stopProcessing="true">
                <match url="https://myweb.site.com" />
                <conditions logicalGrouping="MatchAny">
                    <add input="{QUERY_STRING}" pattern="https://myweb.site.com/Default.aspx" negate="true" />
                </conditions>
                <action type="Rewrite" url="https://myweb.site.com/login" />
            </rule>

我更喜欢在GUI中执行此操作,但如果我绝对必须手动编辑配置,那么我会这样做。

提前感谢您的帮助!很抱歉没有更多的知识!

1 个答案:

答案 0 :(得分:0)

在你的情况下,规则应该是这样的:

<rule name="root to login" stopProcessing="true">
    <match url="^$" />
    <conditions>
        <add input="{HTTPS}" pattern="off" />
    </conditions>
    <action type="Redirect" url="https://myweb.site.com/login" appendQueryString="true" redirectType="Permanent" />
</rule>

此规则仅会将http://myweb.site.com重定向到https://myweb.site.com/login

https://myweb.site.com重定向到https://myweb.site.com/login。 (如果您想允许,只需删除condiitons部分)

在此行中<match url="^$" /> url属性应包含url路径的模式。在你的情况下,url路径为空(因为它是主页),正则表达式^$表示空字符串