我可以使用根 web.config 对某些目录进行全局重定向吗?

Posted

技术标签:

【中文标题】我可以使用根 web.config 对某些目录进行全局重定向吗?【英文标题】:Can I use the root web.config to do a global redirect on certain directories? 【发布时间】:2012-06-29 07:35:50 【问题描述】:

我正在尝试使用根 IIS 7.5 web.config 来重定向某些 URL。

例如,我试图实现的一个完美示例是重定向到 WebMail。

因此,如果有人浏览到http://www.clientwebsite1.com/webmail,他们将被重定向到http://www.ownerwebsite.com/webmail。

我目前有这个:

<location allowOverride="true">
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="MEWebMail">
          <match url="^webmail/([^/]*)$" />
          <action type="Redirect" url="http://www.ownerwebsite.com/MEWebMail/" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</location>

虽然到目前为止它似乎不起作用,但有什么想法或者我什至可以这样做吗?

感谢您的帮助。

【问题讨论】:

似乎在这里工作得很好。只是发现您的规则重定向到/MEWebMail,但在您的文本中您说您想重定向到/webmail。疏忽还是错误? 是的,您提供的规则似乎适用于指向您的 IIS 实例的 all 主机名。如果您想准确指定重定向的主机和路径,请参阅我的答案。 你说它对我有用但不是:(它只适用于更改后创建的新站点吗?如果子配置中有重写规则怎么办,这些会在之前还是之后触发根重写规则?我已经重新启动服务器以确保这不是问题,尽管我相信更改配置会重置很多。(对不起,/MEWebMail 是预期的目标) 【参考方案1】:

是的,您可以添加匹配的规则并为 HTTP_HOST URL 部分添加条件。我相信以下重写规则应该适用于您的情况。

<rewrite>
    <rules>
        <rule name="MEWebMail" stopProcessing="true">
            <match url="^webmail/([^/]*)$" />
            <conditions>
                <add input="HTTP_HOST" pattern="^www\.clientwebsite1\.com$" />
            </conditions>
            <action type="Redirect" url="http://www.ownerwebsite.com/MEWebMail/" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

有关详细信息,请参阅以下 rewrite config learn.iis.com 文章。

Accessing URL Parts from a Rewrite Rule

Rule conditions

【讨论】:

以上是关于我可以使用根 web.config 对某些目录进行全局重定向吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用web.config转换在根元素上设置多个属性

asp.net web.config中基于多个角色的文件夹授权

如果 Windows 索引服务不索引 Web.Config,它可以重新启动应用程序池吗?

允许对 web.config 中的单个文件夹进行匿名身份验证?

文件夹中的 web.config 允许全部或不进行用户身份验证

如何返回任何未指向IIS web.config中任何文件的Web请求的特定页面?