网站做301重定向,IIS服务器的核心思路就是装好URL Rewrite模块,用web.config规则把旧地址永久指向新地址。 无论是HTTP跳HTTPS、域名更换还是去掉index.html后缀,本质上都是拦截请求后返回301状态码,告诉搜索引擎”这个地址已经永久搬家了”。
网站http跳转https 301 iis配置步骤
现在主流浏览器对纯HTTP站点会直接标记”不安全”,用户看到警示后跳出率明显上升,行业共识认为,HTTPS已经是网站标配,而HTTP跳HTTPS必须用301而不是302,因为301明确告知搜索引擎这是永久迁移,权重才能完整传递到新地址。
动手前先确认IIS环境
配置之前,先检查三样东西:
- 服务器系统建议Windows Server 2012 R2及以上版本
- IIS版本建议8.0以上,老版本IIS 6.0的操作逻辑完全不同
- 必须安装URL Rewrite模块,这是微软官方提供的免费扩展
URL Rewrite模块在微软官网的IIS扩展区下载,安装包文件名是rewrite_amd64.msi或rewrite_x86.msi,按服务器位数选择,装好后IIS管理器左侧菜单会出现”URL重写”图标,没有这个图标说明安装失败。
在IIS管理器里配置HTTP跳HTTPS
打开IIS管理器,选中你的站点,双击”URL重写”图标,右侧操作面板点击”添加规则”,选”空白规则”,按以下参数填写:
- 规则名称随意,建议写HTTP to HTTPS
- 匹配URL部分,请求的URL选”与模式匹配”,模式填,匹配所有路径
- 条件部分,逻辑分组选”全部匹配”,输入条件
{HTTPS},模式填Off - 操作部分,类型选”重定向”,重定向URL填
https://{HTTP_HOST}/{R:1},重定向类型选”301″
保存后HTTP访问直接跳到HTTPS对应地址,如果服务器上同时绑定了多个站点,确认规则添加在正确的站点层级下,别加到服务器根级别导致所有站点一起跳转。
iis 301重定向 web.config写法与验证
不想在图形界面点来点去,直接改站点根目录的web.config文件更高效,特别是要批量迁移几十个旧URL的场景,web.config是站点级配置,修改后保存即生效。
手写web.config规则示例
在站点根目录找到web.config文件,把以下配置贴进<system.webServer>节点里:
<rewrite>
<rules>
<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
<match url="(.)" />
<conditions>
<add input="{HTTPS}" pattern="Off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
redirectType="Permanent"对应的就是301状态码,不能写错,保存后在命令行执行iisreset重启IIS让全部设置生效,注意修改前备份原文件,写错规则会导致网站打不开,备份能快速回滚。
如何确认重定向真的生效
验证方式有两种最直接:
- 浏览器打开旧地址,按F12切到Network标签,看第一个请求的状态码是否为301
- 命令行工具curl验证,命令是
curl -I http://你的域名/index.html
返回头里出现HTTP/1.1 301 Moved Permanently和Location: https://你的域名/index.html,说明规则生效了,如果出现302或者200,检查规则里的redirectType参数以及条件是否写反了。
批量检查全站跳转是否漏页面
站点页面很多时,逐个点击检查不现实,利用百度搜索资源平台的抓取诊断工具,输入旧页面URL,工具会模拟爬虫访问并返回响应码,重点检查返回200的旧URL,如果它没有跳到新地址,说明规则存在漏洞,通常是因为路径规则里没有覆盖到这类带参数或特殊字符的URL。
域名更换场景下的iis 301重定向
老域名换新域名是301最高频的使用场景,搜索引擎对新老域名之间关联的判断,依赖每个页面的301响应,这个环节做不好,新域名的收录和排名周期会拉长很多。
全站旧域名跳新域名的规则写法
老域名的web.config里添加如下规则:
<rule name="Redirect Old Domain" stopProcessing="true">
<match url="(.)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www.olddomain.com$" />
</conditions>
<action type="Redirect" url="https://www.newdomain.com/{R:1}" redirectType="Permanent" />
</rule>
条件里的{HTTP_HOST}只匹配域名和端口,不包含协议部分,老域名有带www和不带www两个版本时,需要做两条规则,或者用正则一次性匹配,比如pattern="^olddomain.com$|^www.olddomain.com$",新域名的web.config里不要加反向跳转规则,否则会造成循环跳转,搜索引擎会直接放弃抓取。
只跳首页和全站跳转的差异
有些站长只想把老域名首页指到新域名首页,其他页面保持原样,这种情况反而不要用301,搜索引擎收录的是全站页面,只跳首页等于让所有旧页面的权重悬空,业内专家指出,全站一对一跳转是最稳妥方案,路径保持对应关系,比如/article/123.html跳到新域名的/article/123.html,后续提交一次站点地图就能逐步完成权重迁移。
去掉默认文档后缀的跳转
把/index.html这类默认文档统一跳到根路径,避免同一内容存在两个地址被人为拆分权重,规则如下:
<rule name="Remove index.html" stopProcessing="true"> <match url="^index.html$" /> <action type="Redirect" url="/" redirectType="Permanent" /> </rule>
这条规则放在其他规则之前执行,stopProcessing="true"保证匹配后不再走后续规则。
301重定向完成后的权重交接与排查
配置生效只是第一步,权重交接通常需要一到两周观察期,百度搜索资源平台的抓取诊断能模拟爬虫访问,直接看到响应码和跳转链路,如果发现某个页面变成302或者链路过长,及时修正规则并重新提交抓取。
几个高频排查点整理如下:
- 旧域名是否还开着其他端口服务,只跳80端口可能遗漏部分入口
- CDN层有没有做二次跳转,与IIS层301叠加会导致链路过长,搜索引擎通常不跟进超过三次跳转的URL
- 页面内的图片和脚本引用是否残留HTTP协议,浏览器会报混合内容警告,影响用户信任度
301和302的选择边界
301是永久性跳转,302是临时性跳转,语义截然不同,活动页临时跳转用302没问题,域名变更、协议升级、URL结构调整这类长期变化必须用301,搜索引擎对302的权重处理方式是保留在原始URL上,导致实际展示的页面一直拿不到排名权重。
跳转后排名波动的预期
跳转完成初期,排名出现波动是正常现象,相当一部分站点在换域名后的前两周,部分长尾词排名会小幅下滑,随后随爬虫重新抓取慢慢回升,不必额外提交新域名,让301规则自动引导爬虫走完新老地址的对应关系。
常见问题解答
Q: iis 301重定向配置之后多久生效?
A: 修改web.config保存后立即生效,不需要重启IIS,前提是没有语法错误,如果执行了iisreset,配置同样会在重启完成后生效,验证时注意浏览器缓存会干扰结果,用无痕窗口或curl工具看真实响应。
Q: 老域名续费期间做301,续费中断会有什么后果?
A: 域名过期后DNS解析停止,301规则跟着失效,搜索引擎访问旧地址直接拿不到响应,权重迁移中断,做域名301前确保老域名至少续费一年,给搜索引擎留出充分的抓取过渡时间,同时新域名的服务器配置和SSL证书也要保持稳定,避免迁移期间出现大面积访问异常。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/743464.html





