IIS 将子目录重定向到具有相同名称的根级目录
IIS redirect a subdirectory to a root-level directory with the same name
我想在 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
结尾的多级 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>
或者你可以加入白名单
<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>
我想在 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
结尾的多级 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>
或者你可以加入白名单
<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>