拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

三年没动过栏目结构的企业站:pillar-cluster 内链架构与站点层级改造实录

三年没动过栏目结构的企业站:pillar-cluster 内链架构与站点层级改造实录

三年没动过栏目结构的企业站:pillar-cluster 内链架构与站点层级改造实录

适用读者:接手老企业站的技术 SEO 从业者、负责官网改版的前端与全栈工程师、被「收录上不去」折磨的企业站站长。

上个月一位做了十几年机械制造的朋友给我看他们官网的 Google Search Console(GSC)后台,页面索引报告里一长串灰字:已抓取 - 未编入索引,604 个页面里占了 483 个。他第一反应是网站被 Google 惩罚了。我说恰恰相反,Google 对你这站抓得挺勤快,问题出在结构上——600 多个页面摊平在一个层级里,栏目之间互不链接,权重进站之后没有路可走。

这个站 2018 年找外包做的,中间只换过两次视觉稿,栏目结构三年没动过。8 月我开始帮他按 pillar-cluster(支柱-集群)模型做架构改造,8 周后索引率从 19% 拉到 72%,核心词进前 3 页的数量从 17 个涨到 39 个。这篇文章把整个改造拆开记录:改前怎么诊断、内链权重怎么量化、URL 怎么做 301 收敛,以及踩过的几个坑。

TL;DR 快速摘要

  • 扁平结构致 71% 孤儿页:600 页摊平无互链,权重进站无路可走。
  • pillar-cluster 改造见效:8 周索引率从 19% 升至 72%,核心词进前 3 页翻倍。
  • URL 三层收敛 + 301:旧路径按栏目批量映射,权重完整转移不丢分。
  • 内链审计脚本可复用:改造前后各跑一遍,CSV 直接当验收标准。

600 页扁平结构,问题到底出在哪

老周这个站(化名,下文都这么称呼)是典型的历史包袱型企业官网。市场部的人这些年断断续续往上传内容:产品页 300 多个,参数与图纸下载页 90 多个,新闻 180 多篇,客户案例 40 来篇。当年 CMS 图省事,所有页面全挂在根目录下,路径长这样:/product-cnc-vmc850.html、/news-2023-06-08.html。没有层级,没有栏目互链,侧边栏是全站统一的一排「产品中心 / 新闻动态 / 联系我们」,仅此而已。

我接手诊断时做了三件事,把问题钉死:

  • 写了个小爬虫把全站 604 个页面扫了一遍,统计每页的站内入链数。71% 的页面入链数是 0,也就是孤儿页(Orphan Page),只能靠 sitemap.xml 和列表分页被 Google 发现。
  • 看 GSC 抓取统计报告,新品页发布两周,抓取记录还是 0 次;整站日均抓取量平摊到 600 个页面上,每个页面几天才轮到一次。
  • 拉 50 个核心词的排名快照,只有 17 个词进过前 3 页,而且全集中在首页和两个权重最高的老产品页上。

问题不在内容。老周的产品页参数写得很全,新闻也是市场部真人在更新,一年能出 60 多篇。坏在链接图:首页链到几个栏目列表页,列表页链到分页,翻到第 5 页之后基本就是死胡同;详情页之间互相不知道对方存在。Google 就算抓到了页面,也判断不出哪些页面重要,判断不出主题归属,索性大量挂着「已抓取 - 未编入索引」。

老周当时的原话是:「我这些页面单拎出来哪篇不比同行写得细,怎么就是不给排名?」这话其实答了:单独看每页都行,合在一起就是一盘散沙,搜索引擎没有理由相信这个站任何一块内容是权威的。

改造前诊断清单

动手改结构之前,先把现状量化钉死。下面这张表是我给老周做初诊时的完整动作,每一步都对应一个可复用的产出物,改造完成后还能拿来做验收对照:

步骤所需工具关键输出物耗时预估常见坑位
1. 全站 URL 清单导出sitemap.xml 解析脚本 / Screaming Frogurls.txt(全站 604 个 URL)0.5~1 小时别漏了 PDF、图片页等非 HTML 资源,后面爬虫会误判
2. 站内入链数统计Python + requests + BeautifulSoup(上文脚本)inbound_report.csv(每页入链数)2~4 小时(含抓取限速)只统计<main>里的链接,导航和页脚会污染数据
3. 孤儿页识别上一步 CSV 过滤inbound_links=0孤儿页清单(老周站 71% 命中)复用上一步别把「仅靠 sitemap 可发现」当成有入链,两者不是一回事
4. GSC 抓取统计核对Google Search Console → 抓取统计报告抓取频率截图、未编入索引页面数0.5 小时数据有 2~3 天延迟,别拿当天数据下结论
5. 核心词排名快照GSC 效果报告 / 第三方排名工具50 个核心词排名表(前 3 页数量)1~2 小时排名快照要固定日期,改造前后对比才有意义
6. 跨栏目链接矩阵上文脚本的cross_section输出栏目间链接流向表(前 20 行)复用第 2 步同栏目互链别计入,只看跨栏目的权重流向
7. 外部历史链接盘点合作方沟通 + 印刷品/二维码/公众号文章排查外部硬编码链接清单2~4 小时最容易漏的一步,301 正则映射兜不住所有历史路径

坑位提醒:第 2 步和第 6 步共用同一份抓取结果,跑一次脚本就能同时产出,别重复抓全站浪费时间。整份清单做完,改造前和改造后各跑一遍,差异就是你的工作量清单和验收标准。

内链权重分配的机制:PageRank 在站内怎么流动

改造前得把底层逻辑讲透。Google 官方 SEO 入门指南把链接描述成「投票」,一个页面收到的站内链接越多、来源页面本身越权威,它被评估为重要的概率就越高。这是 PageRank 在站内维度的直观表现:权重沿链接流动,每经过一层稀释一次;没有内链指向的页面,权重流动到不了,只能靠外部信号硬扛。

扁平结构的病根在于:604 个页面在链接图上几乎是对等节点,首页权重平摊出去,落到每个详情页头上只剩薄薄一层;详情页之间零互链,权重流到叶子节点就断头,没有回流、没有再分配。Google 的抓取调度器(crawler scheduler)也会参考站内链接结构决定抓取优先级,0 入链的孤儿页在抓取队列里天然排后面,索引速度自然起不来。

改造成 pillar-cluster 之后,链接图变成「星型 + 网状」的混合结构:支柱页(Pillar Page)承接栏目层的主要入链,集群页(Cluster Page)挂在支柱页下面,集群页之间横向互链。权重在簇内循环加强,再通过集群页指向支柱页的链接向上回流,形成有方向的权重循环。下面这张图是改造前后链接图的直观对比:

改造后:pillar-cluster 层级

横向互链

面包屑回流

首页

支柱页 x6

集群页 x48

详情页

改造前:扁平散点结构

首页

栏目列表页 x5

产品详情 / 新闻详情

孤儿页 x430
0 站内入链

左半边的问题一眼能看出来:孤儿页悬在图外面,权重流不过去;右半边所有节点都挂在一条从首页出发的路径上,每个页面至少有一条站内入链。这就是后面索引率能提升近四倍的图论基础。

重组方案:6 个支柱页 + 48 个集群页

先做关键词聚类,再定支柱。老周的产品线是数控加工中心、液压冲压设备、钣金生产线三大块,客户问得最多的场景集中在汽车零部件和家电外壳两块,另外站里积压的选型指南类内容不少。据此定了 6 个支柱页:三个产品线支柱、两个行业解决方案支柱、一个选型知识支柱。支柱页不是普通栏目页,每页都有 1500 字以上的原创导览内容,把本主题下所有子话题串起来。

48 个集群页按「一个集群页吃透一个长尾意图」来拆:比如「立式加工中心选型」下面挂精度对比、主轴配置、典型加工节拍这些子题;原来散落的 90 多个参数下载页全部归到对应集群页下面,作为集群页的内嵌资源而不是独立页面。原来 300 多个产品详情页保留,但全部挂进对应集群的层级里。

内链规则是这次改造的核心,写成硬性约束让开发执行:

链接位置指向目标数量约束目的
支柱页正文本簇全部集群页8~10 条上下文链接集中分发权重
集群页正文所属支柱页2~3 条权重回流
集群页之间同簇相关集群页2~4 条簇内循环
详情页面包屑上两级层级固定 2 条传递层级信号
详情页正文同簇相关详情页1~2 条长尾互通

一个执行细节:上下文链接要出现在正文段落里,锚文本用描述性的词,不要做成正文底部一排「相关推荐」的机器拼接。Google 对模板化推荐位的链接加权一直很保守,正文里的编辑性链接(editorial link)信号强得多。

改造后的目标结构长这样,6 个支柱页各自带一簇集群页,详情页通过面包屑和正文链接挂回支柱:

面包屑回流

横向互链

首页 /

支柱页:数控加工中心

支柱页:液压冲压设备

支柱页:行业解决方案

集群页:立式加工中心选型

集群页:五轴应用案例

集群页:加工精度参数对比

集群页:冲压线安全规范

集群页:汽车零部件行业方案

详情页 /products/cnc/vmc850/

URL 三层收敛与 301 映射

URL 层级和内容层级同步收敛,统一成三层:/products/cnc/vmc850/(栏目/子类/详情)、资讯归到/insights/2024/slug/。所有旧路径走 301 永久重定向,映射表按栏目批量生成,特例单独补。下表是映射规则的节选:

旧 URL 模式新 URL 模式数量说明
/product/cnc-*.html/products/cnc/{slug}/137按产品线归入子类
/product/press-*.html/products/press/{slug}/96同上
/news/2023-*.html/insights/2023/{slug}/61新闻并入资讯集群
/download/{file}.pdf保留原路径92PDF 不重定向,挂进集群页
/about.html 等散页/company/{slug}/18小批量人工核对

Nginx 侧用 map 指令做批量映射,比重写几百条 rewrite 规则清爽得多:

# 环境:Nginx 1.24;map 块放在 http{} 里,reload 前先 nginx -t 校验语法 # 旧 URL 按栏目批量映射到新三层结构,单条特例用单独 location 兜底 map $uri $new_uri { # 旧产品详情页 /product/cnc-xxx.html 收敛到 /products/cnc/xxx/ ~^/product/cnc-(?<slug>.+)\.html$ /products/cnc/$slug/; ~^/product/press-(?<slug>.+)\.html$ /products/press/$slug/; # 旧新闻页按年份并入新的资讯集群目录 ~^/news/2023-(?<slug>.+)\.html$ /insights/2023/$slug/; ~^/news/2024-(?<slug>.+)\.html$ /insights/2024/$slug/; # 没匹配上的旧路径一律回首页,避免 404 漏网 default /; } # 301 生效前先在本机 hosts 指向测试机,抽查 20 条旧路径的重定向响应头 server { listen 443 ssl; server_name www.example-machinery.com; # map 命中后 $new_uri 非空,走 301 永久重定向,权重完整转移 if ($new_uri) { return 301 https://www.example-machinery.com$new_uri; } # 未命中的请求交给新站点正常渲染 location / { proxy_pass http://127.0.0.1:8080; } }

上线当天我在 GSC 提交了新的 sitemap,旧的提交记录没删,让两份对照观察。头一周旧 URL 的 301 命中率 99.2%,剩下 0.8% 是外部合作方硬编码的老链接,逐条补进了映射表。这里有个教训:改版前一定要把合作方、印刷品二维码、微信公众号历史文章里的外链路径扒出来过一遍,单靠正则映射兜不住所有历史路径。

内链审计:用脚本量化权重流向

架构改得对不对,不能靠感觉,得量化。我用了一个两层的审计口径:页面级的入链数(找孤儿页和权重洼地),栏目级的跨栏目链接矩阵(看权重流向是否符合设计)。脚本如下,改造前后各跑一遍,差异就是工作量清单:

# 依赖:Python 3.10+,requests、beautifulsoup4(pip install requests beautifulsoup4)# 环境:全站 URL 清单 urls.txt 来自 sitemap 解析,逐页拉取后输出 CSV 审计报告importcsvfromcollectionsimportdefaultdictfromurllib.parseimporturlparseimportrequestsfrombs4importBeautifulSoup# 站内全部 URL 清单,一行一个SITE_URLS=[u.strip()foruinopen("urls.txt",encoding="utf-8")ifu.strip()]# 取路径前两段作为「栏目键」,用于统计栏目间的链接流向defsection_key(url):parts=urlparse(url).path.strip("/").split("/")# 单段路径统一归入 home 层,方便统计首页之外的人造层级return"/".join(parts[:2])iflen(parts)>=2else"home"# 入链计数表:目标 URL -> 站内指向它的链接条数inbound=defaultdict(int)# 栏目间链接矩阵:(源栏目, 目标栏目) -> 次数,用来核对权重流向cross_section=defaultdict(int)forurlinSITE_URLS:try:# 逐页拉 HTML;生产环境建议加并发控制、UA 和超时重试html=requests.get(url,timeout=10).textexceptrequests.RequestException:# 抓取失败的页面跳过,失败清单最后单独输出排查continuesoup=BeautifulSoup(html,"html.parser")# 只统计正文 <main> 里的链接,导航、页脚另算,避免模板噪声main=soup.find("main")orsoup.bodyforainmain.find_all("a",href=True):href=a["href"].split("#")[0]# 过滤外链、伪协议与空锚点ifnothref.startswith("http"):continueifurlparse(href).netloc!=urlparse(url).netloc:continueinbound[href]+=1# 同栏目互链不进跨栏目矩阵,只关心跨栏目的流向ifsection_key(href)!=section_key(url):cross_section[(section_key(url),section_key(href))]+=1# 输出每个 URL 的入链数,0 入链的就是待处理的孤儿页withopen("inbound_report.csv","w",newline="",encoding="utf-8")asf:writer=csv.writer(f)writer.writerow(["url","inbound_links"])foruinSITE_URLS:writer.writerow([u,inbound.get(u,0)])# 打印跨栏目矩阵前 20 行,肉眼核对哪些栏目还是互不来往for(src,dst),ninsorted(cross_section.items(),key=lambdax:-x[1])[:20]:print(f"{src}->{dst}:{n}")

改造前跑出来的结果和爬虫初诊一致:71% 的页面 0 入链,跨栏目矩阵里「新闻→产品」「案例→产品」两个方向全是 0,也就是说 8 年里新闻和案例从没给产品页递过一票。改造后第 4 周复跑:0 入链页面降到 12 个(全是还没挂完的老图纸页),「insights→products」方向单月新增了 260 多条上下文链接,支柱页的入链数是改前的 14 倍。这份 CSV 我后来直接当验收标准用,开发每挂一批内链就重跑一次。

8 周执行节奏与 GSC 数据对比

执行节奏比想象中平缓:第 1~2 周做关键词聚类和支柱页定稿;第 3~4 周上线新 URL 结构和 301,同时迁内容;第 5~6 周集中补内链,重点是集群页之间和 insights 到产品的上下文链接;第 7~8 周清理残留孤儿页、复跑审计、盯 GSC。中间在第 5 周踩过一个坑:批量替换模板时把面包屑的第二级写死成了栏目名,导致一批详情页的面包屑层级断了一级,复跑审计时跨栏目矩阵突然冒出几百条异常链接才发现,改回来之后数据才恢复正常。

GSC 里最有说服力的是索引报告和效果报告这两组数:

指标改造前(第 0 周)第 4 周第 8 周
已编入索引页面115(19%)296(49%)435(72%)
已抓取 - 未编入索引483240108
核心词进前 3 页数量172639
详情页平均点击深度5.23.12.4
日均抓取量(全站)约 210 次约 480 次约 870 次

几个数字值得放在一起看。索引率 19% 涨到 72%,但抓取量也翻了四倍左右——抓取调度器看到站内链接变密、层级变浅之后,主动提高了抓取预算(crawl budget),这是个正向循环:内链密 → 抓取勤 → 索引快 → 排名变动更快被发现。点击深度从 5.2 降到 2.4,意味着重要详情页离首页只隔两次点击,这是层级收敛最直接的收益。老周第 8 周在电话里的原话:「新闻页开始给产品页带流量了,以前那 180 篇新闻等于白写,现在等于埋了一堆管道。」

顺带说一下:这套架构对 GEO 的衔接价值

这次改造的主体是传统搜索引擎的收录与排名,但顺手为后续 GEO(生成式引擎优化,Generative Engine Optimization)铺了路。pillar-cluster 天然产出「一个主题一个权威聚合页」的结构,生成式引擎做检索增强时偏好摘取主题聚焦、层级清晰的页面;等后续要针对 AI 搜索做适配,只需要在集群页上补 FAQ 结构化数据和面向机器可读的内容组织,链接和层级这套地基不用再翻动。传统 SEO 是 1,GEO 是后面加的 0,顺序不能倒。

GEO 适配三步走

衔接价值说清楚了,落地动作拆成三步,每步都对应一个可复用的产出物,改造完传统 SEO 之后顺手就能做:

第一步:集群页加 FAQPage 结构化数据

生成式引擎做检索增强时,偏好直接摘取 FAQ 里的问答对作为答案素材。在集群页<head>里注入 JSON-LD,把页面覆盖的长尾问题逐条列出来:

{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"立式加工中心怎么选型?","acceptedAnswer":{"@type":"Answer","text":"先按工件材质和加工节拍定主轴转速与行程,再对比刀库容量和换刀时间,最后用典型零件试切验证刚性。"}},{"@type":"Question","name":"五轴加工和 3+2 定位加工的区别是什么?","acceptedAnswer":{"@type":"Answer","text":"五轴加工是联动切削,适合复杂曲面;3+2 定位是分度后三轴加工,适合斜面钻孔和铣面,成本更低。"}}]}

坑位提醒:FAQ 的text字段要和页面正文里的答案逐字对应,别写页面里没有的内容,否则会被判为内容不一致。

第二步:支柱页写「核心结论」段落

生成式引擎摘取答案时,偏好页面开头一段能独立成文的结论。在支柱页正文第一段之后,加一段 50 字左右的「核心结论」,把本主题的答案前置:

核心结论:数控加工中心选型看三件事——工件材质定主轴、加工节拍定行程、预算定刀库配置;选型前先用典型零件做试切验证,比看参数表更可靠。

模板:核心结论:{主题}看三件事——{维度一}定{指标一}、{维度二}定{指标二}、{预算/场景}定{配置};{行动建议}。

第三步:详情页加「相关主题」模块

详情页底部加一个「相关主题」模块,指向同簇的 3~5 个页面,锚文本用描述性短语。这一步既补了内链,又给生成式引擎提供了「同一主题下还有哪些权威页」的上下文:

<sectionclass="related-topics"aria-label="相关主题"><h2>相关主题</h2><ul><li><ahref="/products/cnc/vmc850/">VMC850 加工中心参数详解</a></li><li><ahref="/products/cnc/vmc650/">VMC650 与 VMC850 精度对比</a></li><li><ahref="/insights/2024/cnc-selection-guide/">数控加工中心选型指南</a></li></ul></section>

三步做完,传统 SEO 的地基和 GEO 的适配层就都齐了:集群页喂结构化问答,支柱页给结论摘要,详情页补主题上下文,链接和层级这套骨架不用再动。

误区澄清或趋势预判

两个常见误区要提。第一个是只改 URL 不改内链,很多改版把 301 映射做得很完善,新结构上线后内链还是老样子,过两个月索引率纹丝不动,问题就出在 301 只转移单页权重、重建不了链接图;URL 和内链必须同一批改,缺一边都白干。第二个是支柱页写成大杂烩导航页,只有链接没有内容,Google 对「纯链接聚合页」的评估越来越严,支柱页必须有原创导览性内容才立得住。

趋势上说一句:AI 搜索起来的这两年,站内结构的马太效应在加重。生成式引擎给出的答案高度依赖少数权威来源,而「权威」的判断信号和传统索引一脉相承——主题聚焦、层级清晰、内链健康。老站的结构债越早还越便宜,等 AI 引擎也开始按链接图挑信源的时候,补课的成本只会更高。你要也在维护一个多年没动过结构的企业站,欢迎评论区聊聊你的索引率卡在哪一档。

参考与延伸

  • Google SEO 入门指南(站内结构与链接基础):https://developers.google.com/search/docs/fundamentals/seo-starter-guide
  • Google Search Console 帮助:网页索引报告的「已抓取 - 未编入索引」解读:https://support.google.com/webmasters/answer/7440203
  • Google 搜索中心:Google 抓取与编入索引概览:https://developers.google.com/search/docs/crawling-indexing/overview

企业官网收录、pillar-cluster 模型、内链优化、面包屑导航、Google Search Console、技术SEO、站点层级改造

返回列表