我将首先说明我不懂如何使用正则表达式,并且我没有时间在不久的将来学习它。 我已经阅读了一篇文章,解释了如何正确地完成我的需要,但是当我尝试这样做时,它根本不起作用并完全打破了网页(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中执行此操作,但如果我绝对必须手动编辑配置,那么我会这样做。
提前感谢您的帮助!很抱歉没有更多的知识!
答案 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路径为空(因为它是主页),正则表达式^$
表示空字符串