【发布时间】:2017-12-14 18:10:12
【问题描述】:
我首先要说明我不了解如何使用正则表达式,并且在不久的将来我没有时间学习它。 我读过一篇文章,解释了如何完全按照我的需要去做,但是当我尝试去做时,它根本无法正常工作并完全破坏了网页(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 中执行此操作,但如果我必须手动编辑配置,那么我会这样做。
提前感谢您的帮助!对不起,没有更多的知识!
【问题讨论】:
-
<match url="" />应该只包含资源路径和可选的查询字符串,它不应该包含 URI 方案(http:或https)或主机名和端口号(myweb.site.com)。 -
你在
{QUERY_STRING}输入条件中有一个完整的URL。查询字符串是?字符之后的部分。 -
请说明您是否希望
/重写为/login或重定向到/login。我认为重定向更有意义,否则您将拥有两个具有相同响应内容的 URL,这可能会使用户感到困惑。 -
我希望将客户从
/发送到/login,所以如果重定向是正确的方法,那就太好了!但是现在,我不确定在 GUI 的“模式”字段中输入什么内容(<match url=...)。如果需要,GUI 不允许您将其留空。 *** 编辑 - 我已经编辑了原件,因为它是由网站自动修改的。它应该更清楚地说明我想做什么
标签: url iis url-rewriting