Redirect 基于URL在web.config文件中重定向

Redirect 基于URL在web.config文件中重定向,redirect,Redirect,我已经将我的站点的文件结构更改为少一个目录级深度 因此,我希望用户点击: 要重定向到: 看起来很简单的web.config,对吧 如何解析路径,只需去掉第一个目录,其余目录保持不变? 我想这个web.config应该存在于“/directory”中,但它可能更好地存在于根目录中,这将匹配URL中的“/directory”模式 下面是我到目前为止的情况(这可能是错误的)。非常感谢您的帮助 <rule name="Redirect to main site" stopProcessing=

我已经将我的站点的文件结构更改为少一个目录级深度

因此,我希望用户点击:

要重定向到:

看起来很简单的web.config,对吧

如何解析路径,只需去掉第一个目录,其余目录保持不变?

我想这个web.config应该存在于“/directory”中,但它可能更好地存在于根目录中,这将匹配URL中的“/directory”模式

下面是我到目前为止的情况(这可能是错误的)。非常感谢您的帮助

<rule name="Redirect to main site" stopProcessing="true">
    <match url="^(.*)$" ignoreCase="true" />
    <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" />
    </conditions>
    <action type="Redirect" url="http://example.com/ ????" />
</rule>

您的问题的简短答案是以下代码片段:

<rule name="Redirect to main site" stopProcessing="true">
    <match url="^(directory\/)(.*)$" />
    <action type="Redirect" url="/{R:2}" />
</rule>


我已经将URL路径分为两部分(用括号分组)。这允许我们从URL中提取
目录
{R:2}
指的是
rest/of/the/path
,而
{R:1}
指的是URL路径的第一部分-换句话说,指的是
目录/

谢谢您的详细回复!这是有道理的,应该会起作用,但它的行为并不像预期的那样。我似乎有3个问题:1)它只在url设置为类似“^.*$”的值时匹配2)看起来{R:x}值总是空的3)它不适用于子文件夹欢迎!请回答我两个问题。1) 您正在使用哪个IIS版本?2) 如何测试规则?1)运行IIS 7 2)我编辑web.config,然后点击各种URL。所有的都是404,因为目录不在那里,这就是这个规则开始的原因。另外,动作应该是“重写”还是“重定向”,嵌套应该是…等等,对吗?我相信我已经解决了!1) web.config必须位于根目录中,而不是“/目录”文件夹中。2) 我在web.config中有其他规则,所以看起来顺序很重要。当我首先移动你的规则代码时,它就起作用了。3) 我在代码中添加了一些其他修饰符:stopProcessing=“true”(在规则中),ignoreCase=“true”(在匹配中),redirectType=“Permanent”(在操作中)。再次感谢!我很高兴能帮上忙。