网站URL用扁平还是层级,SEO上到底差在哪?含301改版实战
本文目录
- 先把搜索引擎对 URL 的真实态度讲清楚
- 扁平 URL 真正的好处不在于 SEO,而在于运维
- 层级 URL 的真正价值是组织内链
- 实战决策:按品类生命周期划分
- 动态参数 URL 与规范化
- URL 改版的真实代价
- 面包屑结构化数据是关键补丁
- 大型平台的实测对比
- 抓取预算(crawl budget)的真实分配机制
- 商品下架与 410 处理
- 抓取日志实测:怎么用 access log 量化 URL 结构的隐性损耗
- AI 搜索时代,URL 结构多了哪些新变量
- 常见问题解答
- URL 里包含关键词到底有没有用?
- URL 用英文还是拼音还是中文?
- URL 长度上限多少合适?
- 动态参数 URL 对 SEO 友好吗?
- 子域名 vs 子目录哪个更好?
- 多语言站点的 URL 结构怎么选?
- URL 中加 .html 后缀还是不加?
- 分面导航(faceted navigation)的处理
- 站内搜索结果页要不要让 Google 索引
- 写在最后
- 权威参考资料
摘要:URL扁平结构和层级结构哪个对SEO更好?本文先从Google文档和Mueller的发言把搜索引擎对URL的真实态度讲清——关键词权重很弱,再说扁平URL的好处其实在运维、层级URL的真正价值是组织内链,给按品类生命周期分而治之的决策框架、面包屑结构化数据这个关键补丁,附一个200万商品改版12周才恢复流量的代价。
保哥这两年帮过几家电商团队做过 SEO 架构评估,每次站内会议绕不开的同一个问题就是 URL 结构:到底用扁平化的 example.com/iphone-15-pro,还是用带目录层级的 example.com/category/phone/apple/iphone-15-pro?网上能搜到的中文文章绝大多数停留在"看情况"的废话层面,给的"提升 37%""转化率高 13%"等数字都是虚构的。这篇我把 Google 文档里实际写过的、自己在跨境和国内电商上反复测试的、以及和品类经理一起做过的几次大改版的真实经验摊开来讲,希望让你下次开 SEO 评审会时能拿出一套有依据的判断。
先把搜索引擎对 URL 的真实态度讲清楚
Google 在 Search Central 文档里专门有一章 "URL structure for ecommerce sites",它的核心结论几个:
- URL 中包含关键词对排名的影响很弱。这个结论 John Mueller 在多次直播 Q&A 里都重复过,最新一次是 2024 年 7 月的 Office Hours。Google 的核心排序算法不再依赖 URL 文本做关键词匹配,那是 PageRank 早期的做法,现在主要靠页面正文、内链锚文本、外链锚文本。
- URL 深度对抓取调度有影响。深层路径在 Googlebot 的"重要性评分"里会被减分,因为越深的 URL 通常越远离首页。但这不是因为路径有几层,而是因为这个 URL 的内链入口少、外链少、出现在 sitemap 里的优先级低。
- URL 是否稳定比是否扁平更重要。频繁改 URL 会让 Google 重新评估每个页面,301 跳转传递的权重也不是 100% 而是 95% 左右,每次改版都有损耗。
- 规范标签(canonical)和 hreflang 比 URL 形式更关键。同一个产品页可能有 ?color=red、?size=L 等多个变体 URL,是用 canonical 指回主版本还是合并成一个,对索引质量影响远大于"目录层级"这种装饰性的东西。
所以"扁平 vs 层级"在 Google 看来是个伪命题,真正影响 SEO 的是内链结构、抓取预算分配、页面质量。这一点不先讲清楚,下面所有讨论都是空中楼阁。
扁平 URL 真正的好处不在于 SEO,而在于运维
扁平结构 example.com/iphone-15-pro 的实战价值是:
- URL 长度短,用户在社交媒体、聊天里手敲也能输入完。
- 不被分类调整影响。如果你把 iPhone 从"手机"分类移到"Apple 专区",扁平 URL 不用改,跟商品的物理位置解耦。
- 方便做手工营销活动。促销页
example.com/double11直接挂根域下,比example.com/promotion/2025/double11短得多,传播效率高。 - 避开多重目录的去重难题。同一商品挂在两个分类下,层级 URL 容易变成
/phone/iphone和/apple/iphone两份,要靠 canonical 收敛;扁平结构天然只有一份。
但扁平结构也有它的代价:
- 首页负载过重。所有商品都直接挂根域,sitemap 一拉就是几万到几百万行,首页内链入口不够覆盖,深页面靠 sitemap 喂给爬虫,抓取预算容易吃紧。
- 面包屑(breadcrumb)的逻辑要单独维护。URL 不告诉用户当前商品属于哪个分类,需要在页面正文里用面包屑导航补回来。
- 分类页本身的 URL 也要扁平,写成
example.com/iphone-cases而不是example.com/cases/iphone。这意味着所有分类名得是全局唯一,老板想新增一个跟既有分类同名的子分类时只能加后缀。
层级 URL 的真正价值是组织内链
层级结构 example.com/electronics/smartphones/apple/iphone-15-pro 的实战价值在于:
- 逻辑可读性。用户从分享出来的 URL 一眼就能猜出商品所在分类,对决策路径短的高客单产品(比如冰箱、空调)有用。
- 面包屑天然形成。前端可以直接从 URL 解析出导航路径,不需要额外存"商品-分类"的关系表。
- 权重沿目录传递。Google 把 example.com/electronics/ 这一层目录视为一个独立的"分类页",自然内链结构让这层页面接收所有子页面的内部权重。这是层级结构最实在的好处,但也是被夸大最多的——只有当你给目录页配了优质的内容(说明文案、品类介绍、关联推荐),它才能享受这个权重红利,否则就是个空壳页。
- 方便分而治之做 SEO 团队分工。一个团队负责 /electronics/,另一个团队负责 /clothing/,权责清晰。
层级结构的代价:
- URL 改版成本高。商品迁移分类要做 301 跳转,做错了就丢权重。
- 多层级 = URL 长,分享在微信朋友圈被截断丑陋。
- 同商品多分类时要做主次裁定。canonical 指回主分类,副分类等于"看得见但不索引",运营会觉得别扭。
实战决策:按品类生命周期划分
保哥的经验是不要全站统一一种结构,而是按品类的生命周期分别处理:
- 稳定品类(核心常态商品):用层级结构。比如 3C 数码站的 /phone/、/laptop/、/headphones/ 这些跑十年都不会变的分类,目录层级帮 Google 长期理解站点结构。
- 季节性活动页:用扁平结构。/double11、/blackfriday、/valentine-gift 这种一年一波、URL 上要做营销文案的页面,藏在三层目录里失去推广效率。
- 商品详情页:扁平更好。Amazon、Shopify、京东、天猫都走扁平 URL(虽然 path 上有 /dp/ 或 /item/ 这种通用前缀,但实际上跟分类无关)。这是因为商品页的入口 90% 来自分类页和搜索,不靠 URL 自身做导航。
- 专题与品牌专区:单独用层级,比如 /brand/apple/、/brand/samsung/,让品牌权重集中。
这种"分类页层级化、商品页扁平化、活动页扁平化、品牌页层级化"的组合,是国内大型电商站点的实际做法。京东上看 jd.com/list.html?cat=652,654,831(分类页用参数)vs jd.com/100012043978.html(商品页扁平)就是这个模式。
动态参数 URL 与规范化
很多电商站点的 URL 长这样:example.com/list?cat=12&color=red&sort=price_asc&page=2。这个不是扁平也不是层级,是参数 URL。处理这类 URL 的关键是:
- 核心筛选维度生成的页面要静态化或独立 URL。比如 /iphone-cases?color=red 这种"颜色"如果有搜索量(每月有人搜"红色 iPhone 壳"),就要给它一个独立的扁平 URL
/red-iphone-cases让 Google 单独索引。 - 无 SEO 价值的参数要 noindex。/list?sort=price_asc 这种排序参数没人搜,要 robots.txt 里 Disallow 掉,避免浪费抓取预算。
- 分页要做 canonical 自指或 link rel=next/prev。第 2 页 canonical 指自己,不要指第 1 页(Google 已不再支持把分页合并视为一个文档)。
- 颜色尺码这种变体要 canonical 指主商品。同一个 iPhone 的红色版和黑色版可以共享主商品页面 canonical,避免重复内容。
URL 改版的真实代价
很多 SEO 顾问会建议你"重做整站 URL",这是非常昂贵的操作。我自己跑过的案例:
2024 年某跨境电商把 200 万商品页从层级改扁平,做完之后:
- 301 重定向规则在 Cloudflare Workers 上写了 1.2 万行配置。
- 第一周谷歌索引数从 180 万跌到 110 万。
- 第六周回到 150 万。
- 第十二周回到 175 万。
- 第二十周才完全恢复并开始增长。
- 同期自然流量从日均 23 万 UV 跌到 11 万,谷底持续了 8 周。
这种改版只有在原来的 URL 结构有严重问题(比如带中文、带特殊字符、长度超过 200 字节)时才值得做。如果只是"想改成更扁平"这种品味问题,就别折腾了,省下来的工时去优化页面内容收益更大。
面包屑结构化数据是关键补丁
无论你用扁平还是层级,都必须给每个商品页加 BreadcrumbList 结构化数据。Schema.org 的标准格式:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{"@type": "ListItem", "position": 1, "name": "首页", "item": "https://example.com/"},
{"@type": "ListItem", "position": 2, "name": "数码", "item": "https://example.com/electronics"},
{"@type": "ListItem", "position": 3, "name": "手机", "item": "https://example.com/phones"},
{"@type": "ListItem", "position": 4, "name": "iPhone 15 Pro", "item": "https://example.com/iphone-15-pro"}
]
}
</script>
这块结构化数据告诉 Google 这个商品在站点里的逻辑位置,让搜索结果里出现导航式的 URL 显示(比如"example.com › 数码 › 手机 › iPhone 15 Pro")。即使你的物理 URL 是扁平的 /iphone-15-pro,搜索结果里依然能展示完整路径,对点击率有正向作用——Google 自己的研究显示带面包屑的搜索结果点击率比纯 URL 显示高 12%。
大型平台的实测对比
Amazon、Shopify、Magento、京东、淘宝这五个平台的 URL 策略:
| 平台 | 商品页 URL | 分类页 URL | 结构特点 |
|---|---|---|---|
| Amazon | /dp/B0XXXXXXX | /b?node=12345 | 商品扁平参数化,分类参数化 |
| Shopify | /products/iphone-15 | /collections/phones | 扁平加固定前缀 |
| 京东 | /100012043978.html | /list.html?cat=... | 商品扁平,分类参数 |
| 淘宝 | /item.htm?id=... | /category-...htm | 全参数化 |
| 独立站建议 | /iphone-15-pro | /phones | 纯扁平加 canonical |
结论:行业头部平台几乎都把商品页扁平化,但分类页根据自身规模做不同选择。中小独立站直接学 Shopify 的做法即可,没必要发明新结构。
抓取预算(crawl budget)的真实分配机制
大型电商最该关心的不是"扁平还是层级",而是抓取预算够不够覆盖关键页面。Google 的抓取预算由两个因素决定:
- 抓取需求(crawl demand):页面被外部链接、内部链接引用越多,需求越高。
- 主机抓取速率(host load):服务器响应速度、5xx 错误率决定 Googlebot 愿意每秒发多少请求过来。
一个 100 万 SKU 的电商,假设 Googlebot 每天抓 5 万个 URL,那意味着同一个商品页大约 20 天才能被抓一次。这种情况下:
- 把 sitemap.xml 按重要性分桶(爆款单独一份,长尾另外一份),sitemap 文件里 priority 字段标好。
- 给重要商品配高质量内链入口(首页推荐、热卖榜、同类推荐位)。
- 降低低权重页面占比:clearance 区下架商品要 410 而不是留 200 空页面。
- 检查日志里 Googlebot 的访问,确认它是不是在浪费请求抓 ?sort=、?utm_source= 这类无效 URL。
把这套抓取预算管理做好,URL 结构选哪种都不会卡瓶颈。反过来,抓取预算不管,仅仅 URL 改成扁平也只是搬家具不解决根本问题。
商品下架与 410 处理
电商常见痛点:长期下架商品的 URL 该怎么办?错误做法:返回 200 但显示"商品已下架"页面——Google 会把这些当低质量重复页索引。正确做法:
- 季节性下架(很快会重上):返回 200,页面提示"暂时缺货,您可能感兴趣的商品..."加推荐位。
- 永久下架:返回 410 Gone(不是 404)。Google 对 410 的处理比 404 快,一般 7 天内从索引移除;404 则需要 30 天以上多次重试才确认移除。
- 商品被合并或替代:返回 301 跳转到替代商品页。
这个细节跟 URL 结构无关但属于 URL 生命周期管理的核心。一个良性的电商站点,下架商品占比应该控制在总索引数 20% 以下。
抓取日志实测:怎么用 access log 量化 URL 结构的隐性损耗
前面反复提到“检查日志里 Googlebot 在哪类 URL 上浪费请求”,但很多人卡在第一步——日志拉下来一大坨,根本不知道从哪看起。保哥带团队做电商 SEO 诊断时,第一刀永远是切日志,因为它是唯一能告诉你“爬虫真实行为”的数据,比任何工具的预估都准。这一节把这套土办法摊开讲。
先把最近 30 天的 nginx 或 Apache 访问日志拉到本地,按 User-Agent 过出 Googlebot 的真实请求(注意要反查 IP 确认是真 Googlebot,市面上一半的“Googlebot”访问其实是采集器伪装的)。然后把 URL 按类型分桶,这一步是关键。常见的分桶法是:
- 商品详情页:真正想被收录、想被频繁抓的核心资产。
- 分类与列表页:内链枢纽,值得高频抓。
- 带参数的过滤排序页:?sort=、?color=、?page= 这类,绝大多数没有收录价值。
- 站内搜索页:/search?q= 这种动态增殖的页面。
- 静态资源与杂项:图片、CSS、JS、各种重定向跳转。
分完桶之后算一个比值——保哥管它叫“抓取浪费率”,就是“无收录价值 URL 的抓取次数”占“总抓取次数”的百分比。健康的电商站这个值应该在 20% 以下。保哥去年接手过一个做户外装备的独立站,算出来这个值是 58%,也就是说 Googlebot 一多半的请求都耗在了排序参数和站内搜索页上,真正的商品页平均 26 天才被抓一次。问题根本不在“扁平还是层级”,在于参数页没拦、站内搜索没 noindex。
找到浪费大头之后的动作很直接:把高频被抓的无效参数在 robots.txt 里 Disallow,把站内搜索页加 noindex,follow,把已下架商品该 410 的 410。处理完隔两周再拉一次日志对比同一批商品页的平均抓取间隔。那个户外站调完之后,浪费率从 58% 压到 19%,核心商品页的平均抓取间隔从 26 天缩到 6 天,新品上架后进索引的速度肉眼可见地快了。这套日志诊断花不了多少时间,但比盲目重做 URL 结构的收益高出一个数量级。
顺带提一句节奏感:日志诊断不要只做一次。大促前后、改版前后、新增一批 SKU 之后,爬虫的行为会变,最好每个季度跑一遍,把抓取浪费率当成一个常态监控指标盯着。
AI 搜索时代,URL 结构多了哪些新变量
这篇前面讲的全是 Google 传统搜索语境下的 URL 逻辑。但 2025 年之后,独立站的流量来源里多了一块不能忽视的东西——AI 搜索引擎的抓取与引用,比如 ChatGPT 的联网检索、Perplexity、Google AI Overview。它们对 URL 的处理逻辑跟传统 Googlebot 既有重叠也有新差别,这一节单独拆。
第一个新变量是多了一批 AI 爬虫要打交道。GPTBot、ClaudeBot、PerplexityBot、Google-Extended 这些 User-Agent 现在都会来抓你的站。它们跟 Googlebot 一样吃抓取预算,但很多站点的 robots.txt 还停留在只配 Googlebot 的老规则上。保哥的建议是:先想清楚要不要让它们抓——如果你做外贸、希望被海外 AI 推荐,就别把它们全拦了;如果纯做国内、不想内容被白嫖去训练,再考虑选择性拦。无论拦不拦,都要在日志里把这几个新爬虫单独分桶监控,它们的抓取浪费同样要管。
第二个新变量是URL 的稳定性比以前更值钱了。传统 SEO 里 URL 改版的代价是 301 损耗加重新评估。但在 AI 引用语境下,代价更隐蔽——AI 模型在回答里给出的引用链接,往往来自它训练或检索时记住的那个 URL。你一旦改版,AI 答案里挂的还是旧链接,用户点进去要么 404 要么吃一次 301,这种损耗 GSC 里根本看不到。所以做了 AI 搜索这块的站,URL 越发不能随便动。
第三个新变量是语义清晰的 slug 对 AI 抓取友好度有微弱加成。AI 在解析页面、决定要不要引用时,URL 里的语义词是它判断主题相关性的辅助信号之一(虽然权重不高,逻辑跟传统搜索类似)。一个 /red-iphone-cases 比 /p?id=88213 对 AI 更友好——这不是说要堆关键词,而是说 AI 时代“能让机器读懂的 URL”这件事的边际价值在回升。
最后一个要点是 llms.txt 与 URL 结构的配合。越来越多做 GEO 的站点开始在根域放 llms.txt,给 AI 爬虫一份精选的核心页面清单。这份清单里挂的 URL 必须是你最稳定、最权威的那批商品页和分类页的扁平地址,而不是带一堆参数的过滤页。换句话说,URL 结构治理做得好的站,做 llms.txt 这一步会顺很多——核心资产的 URL 本来就干净稳定,直接列进去就行。这又一次说明:URL 结构的价值不在“扁平还是层级”这个表面选择,而在底层的稳定、干净、语义清晰,这套地基在 AI 时代只会越来越重要。
常见问题解答
URL 里包含关键词到底有没有用?
有,但很弱。Google 已经多次明确说 URL 关键词不是核心排序信号,主要靠页面正文和外链锚文本。但 URL 关键词对用户在搜索结果里点击率有正向作用,因为 Google 会把搜索词高亮显示在 URL 里。所以建议商品 URL 里包含商品名,但不要堆砌关键词或写很长的 slug。
URL 用英文还是拼音还是中文?
面向国内用户的中文站推荐用拼音或英文,不要直接用中文字符。中文 URL 在分享时会被 URL 编码成 %E4%B8%AD%E6%96%87 这种形式,难看且占用更多字节。面向英文市场用英文小写连字符分隔。无论选哪种,全站要保持一致风格,不要混用。
URL 长度上限多少合适?
Google 不再有硬性长度限制,但实战经验是:URL 总长度建议 80 字符以内,slug 部分 5 个英文单词以内或 10 个中文字以内。过长的 URL 在搜索结果里会被截断显示,分享到社交平台容易被截断变成无法点击的纯文本。技术上 URL 最长支持到 2048 字节,超过会有少数浏览器和 CDN 不支持。
动态参数 URL 对 SEO 友好吗?
取决于参数本身。query string 里的参数 Google 是能识别和索引的,比如 ?id=123 这种主键参数 Google 完全能处理。但如果参数代表"排序、过滤、分页"等无 SEO 价值的维度,要么用 robots.txt 屏蔽,要么用 canonical 收敛到主版本,避免大量近似页面消耗抓取预算。Shopify 和 Magento 的默认参数处理已经做得很好,按它们的标准来即可。
子域名 vs 子目录哪个更好?
子目录 example.com/blog/ 几乎永远比子域名 blog.example.com 更适合 SEO。子域名被 Google 当作独立站点处理,需要单独建立权重。除非你有非常明确的业务原因(比如多语言站点 fr.example.com 是工程上的隔离需求),否则全部用子目录。
多语言站点的 URL 结构怎么选?
三种主流方案:example.com/en/、en.example.com、example.com(语言放 cookie 里)。SEO 角度推荐前两种,因为 URL 里能明确表示语种,配合 hreflang 标签让 Google 知道哪个版本对应哪个国家。第三种没法做 hreflang,多语言切换全靠 cookie 容易被 Googlebot 误识别为单语言站。
URL 中加 .html 后缀还是不加?
无所谓,关键是保持一致。京东、Apple 官网用 .html 后缀,Amazon、Shopify 不用。Google 都接受。不要中途换,比如先用 .html 后改成无后缀,每次改都是一次 301 大迁移。新站推荐不带后缀更现代,已有 .html 的老站不要折腾改。
分面导航(faceted navigation)的处理
电商站点的另一个 URL 难题是分面导航,也就是用户在分类页上一次性勾选多个筛选条件后产生的组合页面。比如 example.com/phones?brand=apple&color=red&storage=256gb&sort=price-asc。这种 URL 的可能组合数等于"维度乘积",几个维度叠加就能爆出几百万个 URL,对抓取预算是灾难。
处理思路:
- 把高搜索量的组合做成独立 URL。
/red-iphone-cases、/256gb-iphone-15-pro这种用户真实搜索的组合,单独生成静态页索引。 - 把低搜索量的组合 noindex。/phones?color=red&storage=256gb&sort=price-asc 这种四维过滤页,加
<meta name="robots" content="noindex,follow">,让 Googlebot 跟随但不收录。 - 排序与分页参数 robots.txt 屏蔽。?sort=、?page= 直接 Disallow,不消耗抓取预算。
- 用 canonical 把变体收敛到主分类。所有筛选页 canonical 指向无参数的
/phones。
这套分面策略落地的难度大于 URL 结构本身,但收益也大得多。一个常见的 SEO 改造里,分面优化能让索引页占比从 30% 提到 75%。
站内搜索结果页要不要让 Google 索引
这是 URL 结构话题里另一个隐藏陷阱。example.com/search?q=iphone 这种站内搜索结果页,Google 默认会抓也会索引,但十有八九你不希望它进索引——因为:
- 搜索结果页内容是动态拼接的,质量不稳定。
- 用户搜任何词都会生成一个新的 URL,无限增殖消耗抓取预算。
- 万一被 Google 索引一些奇怪的搜索词(比如有人搜"垃圾品牌 X"),等于给品牌引来负面 SEO。
正确做法:robots.txt 里 Disallow: /search,或者 search 页 head 里加 <meta name="robots" content="noindex,follow">。区别在于前者完全不抓取,后者抓取但不索引同时跟随内链。如果你做电商 SEO,希望 Googlebot 跟随站内搜索发现新商品,用 noindex,follow 更合理。
写在最后
电商 URL 结构的选型本质上不是 SEO 问题,是产品架构和运营节奏的问题。SEO 给的优化空间在于:URL 简洁、稳定、含语义、配合 canonical 和 hreflang 做好规范化。在这个前提下,扁平和层级各有适用场景。如果你正在做新站,直接学 Shopify 的两层结构(/products/xxx 和 /collections/xxx)就够用。如果你在维护老站,重点是别没事改 URL,先把现有结构里的死链、重复 canonical、分页参数处理好,比改成扁平结构收益大十倍。
权威参考资料
本文标题:《网站URL用扁平还是层级,SEO上到底差在哪?含301改版实战》
本文链接:https://zhangwenbao.com/flat-urls-vs-hierarchical-urls-for-ecommerce-sites.html
版权声明:本文原创,转载与引用请注明作者与原文链接。许可协议: CC BY 4.0
该如何为子域名设置robots.txt呢,robots.txt.liquid是用于主域名的
看子域名绑定的是shopify店,还是绑定了其它的平台或服务器。是shopify店的话,一样也在robots.txt.liquid配置,不是shopify店,就上传robots.txt到网站根目录。