我可以使用根 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 对某些目录进行全局重定向吗?的主要内容,如果未能解决你的问题,请参考以下文章
asp.net web.config中基于多个角色的文件夹授权
如果 Windows 索引服务不索引 Web.Config,它可以重新启动应用程序池吗?
允许对 web.config 中的单个文件夹进行匿名身份验证?