如何在web.config中实现带子路径的跨域名301重定向?
IIS实现旧域名到新域名的301永久重定向(保留子路径)
你的现有规则无法保留子路径,原因是直接跳转到新域名的根目录,没有携带原请求的路径信息。要解决这个问题,只需对规则做两处关键修改:
- 明确设置重定向类型为301永久重定向
- 在新域名后拼接原请求的子路径
修正后的完整配置
<rule name="Redirect" patternSyntax="Wildcard" stopProcessing="true"> <match url="*" ignoreCase="false" /> <action type="Redirect" url="https://opoura.com{R:0}" redirectType="Permanent" /> </rule>
核心改动解释
redirectType="Permanent":IIS默认的重定向类型是302临时重定向,添加此属性可明确指定为301,让搜索引擎和浏览器知晓这是永久迁移{R:0}:在Wildcard匹配模式下,该变量代表匹配到的完整URL路径(例如原请求是/contact,{R:0}就对应/contact),将其拼接在新域名后即可完整保留子路径
备选方案:正则表达式模式
如果你习惯使用正则表达式匹配,可将规则修改为以下形式:
<rule name="Redirect" patternSyntax="ECMAScript" stopProcessing="true"> <match url="(.*)" ignoreCase="false" /> <action type="Redirect" url="https://opoura.com/{R:1}" redirectType="Permanent" /> </rule>
这里(.*)会匹配所有子路径内容,{R:1}则提取出匹配到的路径部分,实现和Wildcard模式一样的效果。
内容的提问来源于stack exchange,提问作者PNR
相关产品推荐
相关产品推荐

