你是不是也遇到过:辛辛苦苦写内容、发外链、做优化,结果排名就是卡在十名开外?查来查去,发现网站有两个“分身”——www.example.com 和 example.com,长得一模一样,却在搜索引擎里各自为政。流量被切开,外链被摊薄,连你自己都搞不清哪个才是“正主”。
这事真不是玄学。十年前我帮一个本地装修队改站,就栽在这上面:两个域名同时收录,半年没涨一个关键词排名。后来全盘梳理,才明白问题出得有多基础、多致命。
为什么搜索引擎会把www和非www当成两个站?
搜索引擎爬虫不认“长得像”,只认“URL不同”。
它访问 www.example.com 是一条记录,访问 example.com 就是另一条。
哪怕页面代码、标题、正文一字不差,在它的数据库里,这就是两个独立网页。
这就像你在同一条街上开了两家店,门牌号分别是“中山路1号”和“中山路1-A号”,招牌一样、货品一样、老板一样——但顾客问路时,路人只会按门牌指,没人告诉你“其实是一家”。
我有个做社区团购的客户,网站上线一年多,两个版本都被收录了。有次他更新了配送政策,只改了 www 版的页面,裸域版还挂着旧规则。百度抓取后发现两页内容不一致,直接给两个版本都打了“内容质量存疑”的标签,排名集体下滑。这不是运气差,是自己没关好后门。
到底该留www还是非www?3个判断标准
选哪个,不是看谁更“洋气”,而是看谁更省事、更稳、更贴合你的实际。
第一,先看CDN和SSL证书能不能一起罩住两个版本。
比如你用 Cloudflare,有些免费功能默认只对 www 生效;再比如你买的 SSL 证书,如果只签了 www.example.com,那裸域访问会弹“不安全”警告——这种情况下,硬上裸域反而添堵,不如直接选 www。
第二,看网站类型和用户习惯。
个人博客、摄影站、新消费品牌?裸域更干净,手机输入少敲三个字母,用户手指不累。
但如果是银行、政务、传统制造业官网,用户早习惯了 www 开头,突然去掉,反而让人多看一眼:“这网站靠谱吗?”——这时候,别为了“简洁”牺牲信任感。
第三,看团队操作成本。
如果你用的是 WordPress 或其他主流 CMS,后台能一键设主域名,内部链接也能批量替换,那选哪个都行。但如果你的网站是外包开发、多年没动过,连 .htaccess 文件在哪都不知道……那就选当前配置最顺的那个,别折腾。
定下来之后,请记住:别再换。
中途改主域名,等于让搜索引擎把你三年积累的权重清零重练。
301重定向:统一URL的唯一正确方法
别信后台“设置主域名”就能搞定。
CMS 的设置只管生成新链接,不管已经散落在全网的旧链接,也不管搜索引擎早就存好的索引。
真正起作用的,是服务器返回的 301 Moved Permanently 状态码。
它相当于对搜索引擎说:“这个地址永久搬走了,以后所有流量、外链、排名,都请记到新地址上。”
怎么加?看你用什么环境:
- Apache 用户:打开网站根目录的
.htaccess文件,加几行规则就行; - Nginx 用户:在
server块里写return 301 https://www.example.com$request_uri;; - Cloudflare 用户:进“规则” → “重定向规则”,填源地址和目标地址,选“301 永久重定向”。
我之前帮一个知识付费博主改站,他原来用 JS 跳转,浏览器看着是跳过去了,但 Google 根本不认——爬虫看到的是 200 状态码,以为页面还在原地。改成 301 后,三周内收录 URL 数量明显提升,首页关键词也从第 8 位爬到了第 4。
重点划一下:只有 301 有效。302 是临时跳转,meta refresh 和 JS 跳转搜索引擎基本无视。
用canonical标签做双保险
不是所有人都能碰服务器配置。
比如你用的是某些托管型建站工具(如 Shopify 基础版、Wix、部分企业微信小程序官网),后台不开放 .htaccess 或 Nginx 权限——这时候,<link rel="canonical"> 就是你最后的防线。
把它加在每一页 <head> 里,比如:
<link rel="canonical" href="https://www.example.com/about/" />
它的作用很实在:告诉搜索引擎,“这个页面的‘官方正版’是这个链接,其他长得像的,都是盗版,别收。”
但它不能替代 301。
301 是把人和爬虫一起拽过去;canonical 是爬虫路过时,你递张名片说“请认准这一家”。
所以,如果你能配 301,一定要配;再把 canonical 当成兜底——尤其对百度,它对 canonical 的识别比对 301 更快更稳。
别让内部链接和sitemap出卖你
301 配好了,不代表万事大吉。
我见过太多站长,服务器跳转设得漂亮,结果点进自己网站一看:导航栏还是裸域,文章里的图片链接是 www,底部版权链接又跳回裸域……
这等于一边开门迎客,一边在门口撒钉子。
用户点一次链接,先到裸域,再被 301 跳到 www,多耗几百毫秒;爬虫顺着内部链接爬,一会儿看到 www,一会儿看到裸域,直接懵:“到底听谁的?”
你要做的就三件事:
- 登 CMS 后台,把「站点地址」「WordPress 地址」这类全局设置,全部改成你选定的主域名;
- 用 phpMyAdmin 或类似工具,批量替换数据库里文章正文、图片路径里的旧域名;
- 重新生成 sitemap.xml,确保里面每一条
<loc>都是你最终确定的主域名格式,然后提交到 Google Search Console 和百度搜索资源平台。
有个本地教育机构的站,内部链接混用两年,改完 301 后还是一半一半出现在搜索结果里。最后花了半天时间扫全站链接、批量替换,第二天再搜,裸域版本就彻底消失了。
今天就能执行的3步操作
别等“哪天有空”,现在打开电脑就能干:
第一步:打开 Chrome,分别访问 https://www.yoursite.com 和 https://yoursite.com。
如果两个都能打开、且没跳转,说明问题还在。
接着按 F12 → 切到 Network 标签 → 刷新页面 → 找第一个请求,看 Status 列。要是写着 301,OK;要是 302 或 200,就得动手改。
第二步:确定主域名。拿不准?直接选裸域(https://yoursite.com)。
然后登录你的主机控制台(或 Cloudflare / 腾讯云 CDN 控制台),找到“重定向”或“规则引擎”,新建一条 301 规则:把所有 www 流量(或所有裸域流量)永久导向你选定的版本。
第三步:用你平时就在用的工具检查内部链接。
如果你常用 WordPress,装个 Better Search Replace 插件,直接搜替换全站域名;
如果你用的是静态站或自建系统,打开 Chrome 开发者工具 → Console,粘贴这段命令快速检查:
Array.from(document.querySelectorAll('a, img, link[rel="canonical"]')).filter(el => el.href && !el.href.includes('yoursite.com') === false).forEach(el => console.log(el.href))
再生成新 sitemap,上传并提交到 Google Search Console 和百度搜索资源平台。
做完这三步,你不用等算法更新,也不用求人外链——只是把本来属于你的流量,重新拢回一个篮子里。