Redirect IIS将子目录重定向到具有相同名称的根级目录

Redirect IIS将子目录重定向到具有相同名称的根级目录,redirect,iis,url-rewrite-module,Redirect,Iis,Url Rewrite Module,我想在IIS中设置重定向,将我网站上以/blog结尾的所有多级URL重定向到名为/blog的根级子目录。例如,https://www.example.com/sub1/sub2/blog将重定向到https://www.example.com/blog 我编写了以下正则表达式模式: blog/?$ 问题是,虽然这不匹配https://www.example.com/sub1/sub2/blog,它也匹配https://www.example.com/blog,它本身就是我要重定向到的URL。因

我想在IIS中设置重定向,将我网站上以
/blog
结尾的所有多级URL重定向到名为
/blog
的根级子目录。例如,
https://www.example.com/sub1/sub2/blog
将重定向到
https://www.example.com/blog

我编写了以下正则表达式模式:

blog/?$
问题是,虽然这不匹配
https://www.example.com/sub1/sub2/blog
,它也匹配
https://www.example.com/blog
,它本身就是我要重定向到的URL。因此,点击
/sub1/sub2/blog
会重定向到
/blog
,而blog本身会匹配并重定向到
/blog
,等等,导致它陷入重定向到自身的循环中

如何编写正则表达式模式,以便以
/blog
结尾的多级URL将重定向到根级别
/blog
页面,而根级别页面本身不匹配?

请尝试此方法

 <rule name="rewrite rule" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{URL}" pattern="^/(.+)/blog/?$" />
                    </conditions>
                    <action type="Redirect" url="https://www.example.com/blog" redirectType="Temporary" />
                </rule>

或者,你也可以选择whitlist

  <rule name="rewrite rule" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{URL}" pattern="blog/?$" />
                        <add input="{URL}" pattern="^/blog/?$" negate="true" />
                    </conditions>
                    <action type="Redirect" url="https://www.example.com/blog" redirectType="Temporary" />
                </rule>

添加一个条件来检查“^blog”是否匹配,在这种情况下不要重定向。