如何通过web.config配置指定URL重定向并排除其余不需要跳转的URL?
IIS web.config URL重定向规则实现
前提:服务器已安装IIS URL Rewrite 模块
方案1:硬编码全量跳转规则
该方案会把所有要求的跳转关系直接写进配置,匹配到对应路径就执行跳转,其余路径不做处理:
<configuration> <system.webServer> <rewrite> <rules> <rule name="Redirect root to new domain" stopProcessing="true"> <match url="^$" /> <conditions> <add input="{HTTP_HOST}" pattern="^old-domain\.com$" /> </conditions> <action type="Redirect" url="https://new-domain.com/" redirectType="Permanent" /> </rule> <rule name="Redirect promotion campaign to new root" stopProcessing="true"> <match url="^promotion/campaign/?$" /> <conditions> <add input="{HTTP_HOST}" pattern="^old-domain\.com$" /> </conditions> <action type="Redirect" url="https://new-domain.com/" redirectType="Permanent" /> </rule> <rule name="Redirect claim-status to new root" stopProcessing="true"> <match url="^claim-status/?$" /> <conditions> <add input="{HTTP_HOST}" pattern="^old-domain\.com$" /> </conditions> <action type="Redirect" url="https://new-domain.com/" redirectType="Permanent" /> </rule> <rule name="Redirect about us related pages" stopProcessing="true"> <match url="^about-us(/awards-and-recognitions)?/?$" /> <conditions> <add input="{HTTP_HOST}" pattern="^old-domain\.com$" /> </conditions> <action type="Redirect" url="https://new-domain.com/about-us/company" redirectType="Permanent" /> </rule> <rule name="Redirect careers related pages" stopProcessing="true"> <match url="^careers(/apply-for-a-job)?/?$" /> <conditions> <add input="{HTTP_HOST}" pattern="^old-domain\.com$" /> </conditions> <action type="Redirect" url="https://new-domain.com/careers/" redirectType="Permanent" /> </rule> <rule name="Redirect contact us" stopProcessing="true"> <match url="^contact-us/?$" /> <conditions> <add input="{HTTP_HOST}" pattern="^old-domain\.com$" /> </conditions> <action type="Redirect" url="https://new-domain.com/contact-us" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
注意:把配置里的old-domain.com和new-domain.com替换为实际的新旧域名即可,测试阶段可以把redirectType="Permanent"改为redirectType="Temporary"使用302临时跳转,避免浏览器缓存影响测试效果。
方案2:仅处理根路径跳转,其余路径跳过
如果只需要处理根路径的跳转,其余路径的跳转交给CMS内部处理,用下面的单条规则即可:
<configuration> <system.webServer> <rewrite> <rules> <rule name="Only redirect old domain root" stopProcessing="true"> <match url="^$" /> <conditions> <add input="{HTTP_HOST}" pattern="^old-domain\.com$" /> </conditions> <action type="Redirect" url="https://new-domain.com/" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
说明:该规则只会匹配旧域名的根路径请求进行跳转,所有带路径的请求都不会触发该规则,直接交给后续的CMS逻辑处理。
内容的提问来源于stack exchange,提问作者Ignatius Rodrigues
相关产品推荐
相关产品推荐

