在web.config中配置网站流量重定向的问题求助
IIS重定向规则修正方案
你的原规则存在三个核心问题:
{HTTP_HOST}仅匹配请求的主机名(即abc.com),你用它匹配^abc/staging完全错误,staging是URL路径的一部分,不属于主机名范畴。- 重定向URL写死为
xyz.com/,没有保留原路径中staging之后的部分,导致所有页面都跳转到根目录,无法对应about.html这类具体页面。 - 单条件场景下使用
MatchAny逻辑分组无意义,属于冗余设置。
以下是正确的重写规则:
<rule name="StagingToXyzRedirect" stopProcessing="true"> <match url="^staging/(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="^abc\.com$" /> </conditions> <action type="Redirect" url="https://xyz.com/{R:1}" redirectType="Permanent" /> </rule>
规则说明:
<match url="^staging/(.*)" />:匹配所有以staging/开头的URL路径,(.*)会捕获staging/之后的所有内容(比如about.html),后续用{R:1}调用这个捕获值。<conditions>:限定仅当请求主机是abc.com时触发规则,避免影响其他域名的请求。<action>:将请求永久重定向到xyz.com加上捕获的路径部分,实现abc.com/staging/about.html→xyz.com/about.html的对应跳转,建议明确协议(https://或http://),避免跳转后出现协议异常。
注意事项:
- 确保你的IIS服务器已安装URL Rewrite模块,未安装需先在IIS管理器中添加该模块。
- 规则需放置在站点根目录
web.config文件的<rewrite><rules>节点内部。
内容的提问来源于stack exchange,提问作者Peter Van Edom
相关产品推荐
相关产品推荐

