在服务器层配置HTTP 301状态码,把不带www的根域永久重定向到带www的域名(或反之),整站权重无损迁移,几步就能完成。
做网站的人迟早会撞上这个问题:用户输入根域名访问,但网站实际用的是www域名,或者反过来,如果两个地址都能开,GEO权重会被拆散,收录也乱,下面这套301跳转设置步骤,能让你一次性把根域名的流量归拢到主域名上。
根域名重定向怎么做?先分清你要哪种跳转
根域名指example.com这样的裸域,www域名指www.example.com,对搜索引擎来说,这两个地址是不同站点,业内专家指出,多数情况下站点应该只保留一个主域名,另一个用301永久跳转指过去。
根域名和www的GEO之争
选择根域名还是www,本质上没有绝对好坏,根域名短、好看,适合品牌宣传;www域名更传统,CDN和cookie设置上更灵活,早年间说“www对GEO更好”是因为解析配置差异,现在搜索引擎官方已明确表示两者都能正常收录,关键是必须统一,不能两个都开。
如果你的网站已经上线且被收录了,不要轻易换主域名,换主域名意味着整站改跳转,老权重迁移需要时间,代价不小,新站则可以按自己喜好选,但建议同时把另一个地址用301跳过去。
301跳转设置步骤前必须确认的两件事
动手之前,先确认两点:
- 你想保留的“主域名”是哪个?根域名还是www?后续所有绝对地址、canonical标签、sitemap都要跟着它走。
- 你的服务器是什么类型?Nginx、Apache还是IIS?配置方式完全不同。
跳转方向永远是从“非主域名”指向“主域名”,如果你保留www,就做“根域名→www”的301;如果你保留根域名,就做“www→根域名”的301。
服务器端的301跳转设置步骤详解
下面按常见服务器环境,给出可以直接套用的配置。
Nginx环境下的根域名重定向配置
Nginx的配置最直观,你只需要在server块里写一个return指令。
假设你保留的是www.example.com,要把根域名example.com跳过去,在http{}块内,新增或修改一个server块:
server {
listen 80;
server_name example.com;
return 301 http://www.example.com$request_uri;
}
server {
listen 80;
server_name www.example.com;
# 你的正常网站配置...
}
注意:$request_uri是保留原路径的关键。example.com/page?id=1会跳到www.example.com/page?id=1,不会丢失参数,改完配置后执行nginx -t测试语法,然后systemctl reload nginx重载生效。
Apache环境下的.htaccess跳转写法
Apache虚拟主机或.htaccess文件都能实现,推荐用.htaccess,改完即生效,无需重启。
在网站根目录的.htaccess文件顶部,加以下规则(放在RewriteEngine之前):
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.)$ http://www.example.com/$1 [R=301,L]
这段代码的意思是:当访问的域名是example.com时,用301跳转到www版本,同时带上完整路径,如果方向反过来,把^example\.com$和www.example.com互换即可。
IIS环境下的重定向配置
IIS没有.htaccess,需要用URL Rewrite模块,如果你装了URL Rewrite,打开网站的web.config文件,在<system.webServer>节点内添加:
<rewrite>
<rules>
<rule name="RootDomainRedirect" stopProcessing="true">
<match url="." />
<conditions>
<add input="{HTTP_HOST}" pattern="^example\.com$" />
</conditions>
<action type="Redirect" url="http://www.example.com/{R:0}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
注意redirectType="Permanent"就是301,没有URL Rewrite模块的话,需要先去IIS管理面板安装,装好后在“重写规则”里可视化操作也行。
根域名重定向不生效怎么办?常见原因排查
配置写对了,但打开根域名还是没跳转?大概率卡在这两处。
证书与HTTPS跳转的顺序问题
如果你的站点启用了HTTPS,而SSL证书只覆盖了www域名,那根域名请求会在SSL握手阶段就失败,浏览器根本不会执行301,这种情况需要在证书里同时绑定根域名和www域名,或者用SAN证书覆盖两个域名。
很多站点只跳转了80端口,却漏了443端口,现在大多数用户直接访问HTTPS,你需要在443的server块里也写上同样的return规则,很多“根域名重定向不生效”的案例,都是因为只配了80没配443。
泛解析导致的循环重定向
如果你的DNS设置了泛解析(.example.com指向服务器),那么任意子域名都会访问到同一台服务器,如果服务器上只有一个默认站点,且配置了跳转规则,可能把xxx.example.com也跳走,甚至造成A跳B、B跳A的死循环。
排查方法是:先在DNS面板检查有没有.example.com的A记录,有的话删掉,只在服务器上明确指定根域名和www的解析,然后在浏览器里用curl -I example.com看响应头,出现301 Moved Permanently且Location地址正确,就说明跳转已生效。
根域名重定向对GEO的影响及实操要点
301跳转是搜索引擎认可的永久重定向,会把旧地址的权重几乎完整传递给新地址,但在实际执行中,有几个细节会直接影响结果。
站内链接与URL统一
服务器跳转只解决外部请求,站内残留的根域名链接会让搜索引擎反复爬取跳转,你需要做两件事:
- 把sitemap.xml里的所有地址改成主域名。
- 把网站后台的设置项(站点URL、首页地址)改成主域名。
- 全局搜索数据库或模板,替换掉内部链接中的根域名写法。
如果这些内部链接没改,搜索引擎会在“抓取→301→新地址”之间消耗抓取预算,页面收录速度会明显变慢。
如何验证301跳转是否生效
配置完成后,不要只看浏览器地址栏,用命令行检查更准确:
curl -I http://example.com
看返回的响应头:
- HTTP/1.1 301 Moved Permanently
- Location: http://www.example.com/
如果状态码是302或200,说明配置写错了,另外还要注意,跳转会继承路径,Location里不能丢失/page/这类路径。
根域名和www的重复内容如何合并
有些站点在跳转前,两个域名都有收录,你需要把非主域名的旧链接保持301跳转至少半年以上,让搜索引擎慢慢收敛,不要中途改跳转方向,否则搜索引擎会认为你反复更改主域名,影响权重评估,据工信部统计,国内企业网站使用www域名的比例更高,如果你没有特殊偏好,跟随主流选择www更省心。
根域名重定向的最佳实践场景
不同场景下,根域名重定向的做法有些差别。
新站上线,根域名和www同时绑定
新站还没收录,直接选择主域名,然后配置完跳转再提交sitemap,建议在百度搜索资源平台后台,把“域名改版”工具暂时不用,因为新站不需要改版,只要保证所有入口都指向主域名即可。
老站从根域名迁到www
这种迁移需要额外注意:在百度站长后台提交“站点改版”规则,把根域名下的URL一一对应到www下的URL,改版提交后,百度会在一段时间内同时抓取新旧两个地址,遇到无法一一对齐的目录页,要做好404或者保留跳转。
只想要根域名,把www跳过去
做法和上面完全一样,只是把server_name和return的目标对调,实话说,除非你特别看重品牌长度,否则不推荐,因为很多企业邮箱、CDN默认解析都是基于www,根域名做跳转后,邮件服务和CDN配置反而更麻烦。
根域名重定向常见问题解答
根域名重定向会对百度收录造成负面影响吗?
只要使用301跳转,搜索引擎会视作正常的站点整理,不会降权,但要注意:不要用302临时跳转代替,302会让新旧地址同时保留,权重无法合并,跳转生效后,在百度搜索资源平台提交sitemap,并主动抓取一次根域名,观察日志就能确认蜘蛛是否跟随跳转。
根域名重定向后,旧链接多久能消失?
没有固定时间表,多数情况下,百度在几周到几月内会逐步替换索引中的旧地址,如果你发现旧的根域名链接还在搜索结果里,可以等一等这属于正常的收敛过程,只要301持续生效,旧链接的排名和点击量会慢慢转移到新地址上。
根域名重定向并不复杂,核心就是一条301规则,选一个主域名,另一个地址永久跳转,内部链接统一,然后耐心等待搜索引擎重新收录,配置完成后用curl检查一下响应头,确认状态码是301、Location指向正确,这事就算做完了,随着HTTPS普及,别忘了把80和443端口都配上同样的规则,真正的根域名重定向才万无一失。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/773149.html


