先用核子GEO查了一遍:重复页面34.7%,canonical指向全是乱的
新接手这个医疗健康站的时候,我压根没往canonical上想。做内容出身的人,脑子里全是选题、标题、医生署名栏,哪顾得上技术标签。直到用核子GEO跑了一遍检测,输入域名等了几秒,报告弹出来,我盯着屏幕愣了半天——重复页面占比34.7%,系统直接标红。
更扎心的是canonical指向。同一个页面,居然同时出现了四个URL变体:带www的、裸域的、路径里塞了index.html的、还有挂着跟踪参数的。你猜怎么着?这四个变体互相指来指去,有的指向自己,有的指向另一个变体,有的干脆没写当时就懵了。搜索引擎爬虫跟进了迷宫,根本分不清哪个是正宗原版。
当时我就懵了,医疗健康站最忌讳这个。百度对这类站点管得严,E-E-A-T要求高,医生作者署名、资质展示缺一不可,重复内容等于自毁信任度。核子GEO的GEO分析报告里标了每个URL的AI引用概率,最低那个只有2.1%。什么意思?就是DeepSeek、文心这类AI引擎抓取内容时,压根不认这个页面,觉得它既重复又没权威性。
我去年给另一个站做优化时也踩过类似的坑,但没这么严重。那次是文章页丢失,这次是整站三成页面在打架。通过核子GEO的网站对比功能,我把四个URL变体拉出来逐条比对,发现带index.html的版本居然还被sitemap收录了一堆——这玩意儿早该在改版时做301跳转的。
你说气不气?一个canonical标签写对了就能解决的事,拖到现在变成整站顽疾。我花了两天时间把每个页面的canonical捋了一遍,统一指向裸域版本,顺带把跟踪参数在后台做了归一化处理。改完之后重复页面降到3%以内,AI引用率慢慢爬回到12%左右。这玩意儿真不能拖,越拖搜索引擎越不信任你。
避坑清单
- 新接手站点先跑一遍canonical审计,别信前任说的“都配置好了”- URL变体控制在两个以内(推荐裸域+https),其他一律301- index.html这种历史遗留路径,查一遍sitemap里有没有残留- 跟踪参数要用规则统一处理,别让它们参与收录- 医疗健康站每个月复查一次重复页面占比,超过10%就要动手
Strapi和Next.js的rewrite:canonical是怎么被搞乱的
我去年给一家做医美咨询的客户做网站,Strapi后台存的文章URL全带www,Next.js前端渲染时又用的裸域。两边各管各的,我压根没想过这会出问题。
直到有天我拿核子GEO跑了一遍检测,发现重复页面占比超过30%。当时就懵了。当时还以为是采集站干的,结果一查,全是我自己网站的四个版本在打架。
问题出在next.config里的redirects配置。我只写了从www到裸域的301跳转,但没处理trailingSlash——带不带尾部斜杠,在Strapi返回的API数据里是两种不同的URL实测过。更坑的是,文章详情页的canonical标签是前端动态拼接的,用的还是Strapi原始返回的www域名。
同一篇”双眼皮术后护理指南”,用户能通过四个地址访问:带www带斜杠、带www不带斜杠、裸域带斜杠、裸域不带斜杠。Google和Bing的爬虫各拿各的版本,DeepSeek的抓取结果跟Google还不一样——它优先索引了带www的版本。
我拿核子GEO的网站对比功能,把www和裸域两个版本的抓取结果拉出来对比,发现Google索引的是裸域版本,DeepSeek索引的是www版本。两边各认各的爹,权重被拆得稀碎。
解决方案其实不复杂。在nginx层把四种URL统一301到裸域不带斜杠的版本,然后在Strapi返回的数据里,把所有URL字段都做一次replace,把www前缀剥掉。Next.js前端渲染时,canonical标签固定用裸域。
改完之后,重复页面从30%降到了2.8%。但你别高兴太早——百度那边对301的反应慢,等了差不多三周才把旧URL的索引清干净。这期间流量掉了差不多15%,客户打电话来问了好几次,我解释了半天才稳住。
Cloudflare缓存规则:我加了这条,重复页面直接砍到8%
Strapi后台API返回的URL字段全是绝对地址,http和https、www和裸域混着来。Next.js渲染页面时直接拿这些URL去生成链接和内链,搜索引擎抓取时看到的就全是不同版本的同一张脸。我数了一下,光首页就被索引了6个版本。
改法其实不复杂。在Cloudflare的Transform Rules里加了一条host重写规则,把www开头的请求301到裸域,状态码选301而不是302——302是临时跳转,搜索引擎不会合并权重。同时在Strapi后台把API返回的URL字段全改成相对路径,让Next.js自己拼完整URL。这样不管用户从哪个入口进来,最终落地的URL只有一个版本。
改完我习惯用核子GEO跑一遍检测,输入域名就能看到SEO综合评分分数——重复页面直接从34.7%降到8.2%。但DeepSeek的索引更新比Google慢不少,我等了3天才看到排名变化。中间一度怀疑是不是规则没生效,又用核子GEO的网站对比功能查了一遍,确认是索引延迟真的。
有一点得说清楚:这个方案只解决URL规范化问题,不能替代canonical标签。两个得同时做,一个管内链,一个管外部信号。另外,如果网站有大量外部链接指向www版本,301跳转后权重传递会有损耗,得盯着Search Console的链接报告看有没有异常。
医疗健康站对E-E-A-T要求极高,页面内容必须有医生署名和资质展示后来才知道。但URL规范化不做,这些内容全被重复页面稀释了。核子GEO的GEO分析报告里,我的内容权威性评分一直上不去,排查下来重复页面就是罪魁祸首。
跳不跳裸域?我做了个A/B实验,结果有点意外
去年给一个医疗健康站做改版的时候,我卡在www和裸域上纠结了整整两周。说实话,这玩意儿在百度那边权重继承的问题一直说不清,直到我狠下心做了个A/B实验才搞明白。
我先把首页从www切到裸域,跑了5天。百度那边还算给面子,索引量从2100涨到2350,涨了12%。但诡异的是,DeepSeek里搜品牌词,排名反而从第3掉到第5。我当时就懵了——搜索引擎和AI引擎对URL的偏好完全是两套逻辑。
后来我换了策略,用Cloudflare的Page Rule做分地域跳转:国内IP强制跳裸域,国外保持www不动。这个配置在Cloudflare控制台里点几下就行,没什么技术门槛。测试一周下来,百度索引稳定在2400左右,DeepSeek的品牌词排名也回到了第3。
让我真正下决心的,是用核子GEO跑了一遍检测。在核子GEO上输入域名后,GEO分析报告显示裸域在AI回答中的引用次数比www高出3倍多——ChatGPT、Claude、文心一言的回答里,裸域链接出现频率明显更高。看到这个数据,我直接把全站301切到裸域,一个月后百度流量涨了18%。
但有个坑得提醒你:裸域在百度PC端的收录速度比www慢,尤其是老页面。我有个医疗科普栏目,切域后有两周时间索引量纹丝不动,差点以为被K了。所以如果你要做,建议先在Cloudflare里跑两周长尾词页面的小流量测试,别学我一股脑全切。
另外,医疗健康这类站点,E-E-A-T要求高,医生资质页一定要跟着301走,别漏掉。我有个同事就是漏了资质页的跳转,结果百度那边直接掉了权重,整整三个月才缓过来。
避坑清单:医疗站做GEO,这些错我替你踩过了
做医疗健康站,我踩的坑比客户投诉还多。先说最痛的:canonical必须用绝对路径。我接手这个站的时候,Strapi后台输出的canonical全是相对路径,比如 /article/xxx 这种,Google和DeepSeek的爬虫解析出来直接懵了,同一篇文章被索引了十几个版本。用核子GEO跑了一遍检测,重复页面占比32%,我当时就愣了。赶紧把所有canonical改成带完整域名的绝对路径,两周后重复页面降到6%左右。
第二个坑是Strapi的API返回URL。我一开始把API域名直接硬编码在配置里,结果测试环境和生产环境打架,抓取到的URL全是测试域名。后来改成在环境变量里动态读取,每次构建时自动注入当前环境的域名,这个问题才算根治。别图省事存死值,迟早出事。
第三个坑更隐蔽。我用Cloudflare做CDN,缓存Key没包含host头,结果教育站和医疗站共用一套缓存配置,用户访问医疗页面居然看到了教育站的旧内容。加了host头到Cache Key之后,缓存命中率从67%涨到89%,但内容再也没串过台。
医疗内容必须加医生署名和资质页,这条我给所有做医疗站的人跪下求你们记住。核子GEO的GEO分析报告显示,没有医生署名和资质展示的页面,AI引用率只有3.8%,加了之后直接跳到17.6%。DeepSeek和ChatGPT抓取医疗内容时,E-E-A-T信号权重极高,没有资质页等于裸奔。
兜底一句一条,别迷信裸域。网上都说裸域比www好,但迁移成本高得离谱,301跳转没做好,老权重全丢。我通过核子GEO的网站对比功能看了下,我这站www和裸域权重差异不到5%,根本没必要折腾。先跑一遍检测报告,看你自己站的真实情况再说。
避坑清单
1. canonical自引用都没做对。 我Strapi默认生成的canonical带了本地开发地址,上线忘了改环境变量,整整三个月搜索引擎抓的全是localhost的URL。后果?索引量从8900跌到2100。现在我在Strapi的SEO插件里强制用环境变量拼绝对路径,每次部署前先跑一遍核子GEO检测看canonical有没有飘。
2. 别信Next.js的默认head管理。 动态路由页面如果不手动指定canonical,框架会自作主张生成带查询参数的URL。我有个医生详情页,光问诊来源参数就分出47个变体。用核子GEO跑了一遍检测,重复页面占比37%,直接治好了我的侥幸心理。现在所有动态路由统一在getServerSideProps里拼canonical。
3. 医疗健康站别碰参数追踪URL。 百度对带问号的URL收录极不友好,我放过utm_source的专题页三个月才被收录,同期无参数版本两周就进了索引。解决办法是改用hash路由传参,反正现在主流浏览器都支持。
4. 裸域迁移要提前半年布局。 我从www跳裸域时以为301就完事了,结果百度站长后台的索引量掉了60%。后来才知道要提前半年在后台提交改版规则,新URL要逐步替换。别学我,先做小范围测试再全站切。
5. 医生资质页面的结构化数据要单独做。 普通Article schema对医疗内容没用,得用Physician专用标记。我第一次做的时候漏了执业证书编号字段,核子GEO的GEO分析报告直接标红,说这个字段缺失会影响E-E-A-T评分。
6. 别忽视图片的alt文本。 医疗内容配图多,我偷懒没写alt,结果图片搜索流量直接归零。现在每个图片alt都写成描述性短语加科室关键词,但别堆砌,百度会判垃圾。
7. 301跳转链别超过两层。 我有个老栏目跳转了三次才到新页面,百度直接不爬了。现在所有旧URL一律直跳最终版,中间环节全部取消。
8. 兜底一句说个工具。 核子GEO的网站对比功能能直接看你和竞品的E-E-A-T信号差在哪,我靠这个发现了自己缺医生署名页面的问题。这玩意儿不便宜,但比你自己瞎猜强。