Drupal SEO 的名声并不完全配得上它的实力。随便问一圈,总会有人告诉你 Drupal 开箱即用就很适合搜索,而说这话的人往往是在拿十五年前对另一个平台的记忆做比较。一套原装的 Drupal 11 安装,既没有元描述字段,也没有 XML 站点地图,URL 变更时没有自动重定向,而且在编辑手动敲入别名之前,内容一直在 /node/123 上响应。
这不是在批评这个项目。核心刻意把自己的范围保持得很小,把一切带有立场的东西推给贡献模块,而这恰恰是大型 Drupal 站点能比多数平台调得更精细的原因。但这也意味着开箱即用这个说法承担了非常多的分量,意味着一个 Drupal 站点的搜索表现,几乎完全取决于第一天装了哪些模块,以及有谁把它们配成了什么样子。
下面是这套技术栈在 2026 年 9 月的实际状况:核心做了什么,哪些贡献模块替你补上了别的系统免费奉送的能力,只在 Drupal 上才会出现的失败模式有哪些,以及当初这些事一件都没做的站点,修起来要花多少钱。
Drupal 开箱即用适合 SEO 吗。 不适合。核心给你的是路径别名、canonical 链接标签和一个很强的多语言路由层,但它不提供元描述、不提供 XML 站点地图、不处理重定向,也不输出结构化数据。这些来自四个贡献模块:Pathauto、Metatag、Simple XML Sitemap 和 Redirect。缺了它们的 Drupal 站点不是优化得差,而是根本没有优化。
Drupal 核心真正为你做的事
核心给了你三样要紧的东西,而且这三样都做得确实好。
核心的 Path 模块让你可以给任意路由挂上一个人类可读的别名,于是一个节点可以在 /services/tax-advice 上响应,而不是在它的内部路径上。核心会保存这个别名,并按它来解析请求。核心不会做的事情是替你想出这个别名,所以在一个有 2,000 个节点的站点上,得有人手打 2,000 条别名,而现实中从来没有人真的打完。
核心还会在实体页面上输出链接关系。查看一个节点会生成指向别名 URL 的 rel="canonical",以及指向未加别名 URL 的 rel="shortlink",考虑到有好几个商业平台不装插件根本做不到这一点,这已经相当可观。正是这一个行为,让下面要讲的重复路径问题通常只是能扛过去,而不是致命的。
第三样是语言。核心的多语言技术栈会处理路径前缀、按语言划分的别名,以及已翻译实体上的备选语言链接,这是 Drupal 搜索故事里最强的一部分。
其余的一切都是贡献模块。在你自己添加之前,内容类型上不存在元描述字段,没有站点地图,没有重定向表,删掉一个节点只会留下一个 404,再无其他。
事实上不可或缺的四个模块
drupal.org 上带 SEO 标签的模块有几十个。其中四个不是可选项,凡是漏掉任何一个的 Drupal 项目,都会留下一个竞争对手没有的窟窿。
Pathauto
Pathauto
依据令牌模式生成别名,比如 blog/[node:title] 这样的模式,会在节点保存时自动产出别名。它是 Drupal 里最接近人人都装的模块,有 464,471 个站点报告在用它,当前稳定版是 2026 年 5 月 4 日发布的 8.x-1.15,支持 Drupal 10.2 和 11。它依赖 Token 模块。
决定 Pathauto 是帮忙还是添乱的设置是更新动作,它控制标题改变、模式因而产出不同别名时会发生什么。Pathauto 可以什么都不做,可以直接替换掉旧别名,也可以创建新别名并保留一条从旧别名过来的重定向。你要的是第三种,而这个选项只有在装了 Redirect 模块时才会出现。停留在较弱默认值上的站点,会悄悄地为每个节点攒下好几条仍然活着的别名。
Metatag
Metatag 是 Drupal 页面得以拥有元描述的唯一途径,同时也负责 Open Graph 和 Twitter Card 的输出。Damien McKenna 自 2012 年起一直在维护它,有 332,868 个站点报告在用,2025 年 9 月发布的 2.2.0 需要 Drupal 10.3 或 11。
它的工作方式是按实体类型和 bundle 设置默认值,写成令牌模式,再在上面叠加按节点的覆盖。常见的失败是某个模式在整个内容类型里解析出完全一样的结果,于是几百个页面共用同一条描述。这比没有描述更糟,因为它等于告诉抓取程序这些页面可以互相替换。
Simple XML Sitemap
核心不输出任何形式的站点地图。Simple XML Sitemap 是标准答案,有 137,418 个站点在用,2025 年 11 月 26 日发布的 4.2.3 需要 Drupal 10.3 或 11。它可以索引实体、视图和自定义链接,还会输出 hreflang 和图片条目,这在多语言项目里意义重大。
按 bundle 配置它,而不是全站一刀切。默认的诱惑是把什么都包进去,结果就是把分类术语页、用户资料页和未加筛选的视图列表全推进站点地图,等于告诉搜索引擎你最单薄的页面才是重点。
Redirect
Redirect 提供手工重定向,更重要的是提供 canonical URL 强制:它可以把对某段内容的每一个非 canonical 请求都重定向到 canonical 路径。有 265,749 个站点在用它,2026 年 4 月 24 日发布的 8.x-1.13 支持 Drupal 10 和 11。
有一点值得直说。项目页面目前挂着一条招募共同维护者的公告,对一个承担了这么多分量的模块来说,这是一个需要盯着的维护风险,而不是回避它的理由。它仍然受 Drupal 安全公告政策的覆盖。
别的平台没有的 Drupal SEO 陷阱
每个节点至少有两个活着的 URL
这是从别的系统转过来的人最感意外的一点。在 Drupal 里加了别名并不会让内部路径退休。/node/123 会继续以 200 返回完整页面,而且只要更新动作允许它们留存,这个节点曾经被赋予的每一条别名也都一样。
核心的 canonical 标签能减轻损害,Google 把 canonical 标注当作强信号而不是指令 ,把它排在与重定向同级、高于站点地图收录的位置。但强信号不是保证。稳妥的解法是 Redirect 模块的 canonical 强制,它把重复项变成永久重定向,于是根本没有什么需要再去合并。
分类术语页会不断增殖
核心会为每一个分类术语生成一个列表页。在有自由标签词汇表的站点上,这意味着一个标签一个页面,其中大多数只挂着一两个节点,标题来自模板,也没有描述。几百个这样的页面,就是一个谁都没有故意制造出来的内容单薄问题。
按词汇表逐个决定,而不是全站统一。真正有编辑价值的分类可以被索引,并配上手写的描述。自由标签词汇表则从站点地图里排除,多数情况下再加上 noindex。
视图分页与 ?page= 留下的痕迹
核心的每一个视图列表都用 ?page= 参数分页,而每一个这样的地址都是独立的 URL。Google 的指引是序列中的每一页都应当有自己的 URL 和自己的 canonical
,而不是把 canonical 指回第一页,并且 rel next 和 rel prev 已经不再被使用。
Drupal 特有的部分在于,同一个视图上的暴露筛选器和排序会与分页器相乘。一个带三个暴露筛选器、结果有四十页的列表,产生的可寻址 URL 远远多于它实际拥有的内容,而且每一个都会真的渲染出来。
分面与参数爆炸
分面搜索,通常是架在 Search API 之上的 Facets 模块,正是在这里,问题从不整洁升级成抓取预算问题。2026 年 9 月 1 日发布的 Facets 3.0.6 支持 Drupal 10.1 和 11,有 56,746 个站点在用。它同样挂着招募共同维护者的公告。
Google 警告说,抓取程序要走过数量极其庞大的分面导航 URL 之后,才能确认这些 URL 通向的地方并无用处,而这个过程既消耗你的抓取预算,也消耗它们的算力。尽早决定哪些分面组合可被索引,其余的挡掉,并保持参数顺序稳定,让同一组筛选条件永远产出同一个 URL。
发布状态的反复
一个先以未发布状态创建、带着临时标题、一周后又用另一个标题发布的节点,会在创建时产出一条别名,在发布时再产出一条。如果更新动作设错了,两条都活着,两条都可被抓取。再乘上一支编辑团队和一年的产出,别名表最后会比节点表还大,而这正是一次 SEO 审计 在拿活着的 URL 数量对照已发布节点数量时要找的模式。
Drupal 里的结构化数据
有两条路,而这个选择比看上去更要紧。
Schema.org Metatag 扩展了 Metatag,在页面 head 里输出 JSON-LD,覆盖二十五种以上的 schema 类型。2026 年 2 月 19 日发布的 3.0.4 版支持 Drupal 9、10 和 11,有 66,363 个站点在用。和 Redirect、Facets 一样,它也在招募共同维护者。
它的优势是完整继承了 Metatag 的那套继承模型:按 bundle 的默认值、拉取字段值的令牌、按节点的覆盖,以及永远不必看到原始 JSON 的编辑人员。它的局限是你只能表达这个模块建模过的东西,而深度嵌套的 schema,也就是一件商品一旦牵涉到报价、评价和退货政策时所需要的那一类,用令牌字段拼出来会很别扭。
在 Twig 模板里手写 JSON-LD 给你完全的控制权,代价是失去编辑界面。在一个模板数量不多、手边又有开发者的站点上,这往往是更划算的交换。在一个有六十种内容类型和一支内容团队的站点上,就不是了,因为每改一次 schema 都会变成一次部署。
选一条路。我们最常见到的失败,是两条路并行跑着,输出两个在发布日期上互相矛盾的 Article 块。
多语言 Drupal 与 hreflang
这是 Drupal 真正配得上它名声的地方,值得明确写出来,因为这篇文章的其余部分讲的都是缺口。
核心自带语言相关模块,一旦启用内容翻译,Drupal 就会在已翻译实体上输出备选语言链接,不需要任何贡献模块帮忙。路径前缀、按语言划分的别名和按语言划分的菜单,都是开箱就能用的。
Google 对本地化版本 的要求是:每个版本既要列出自己,也要列出其余所有版本;这些标注必须是双向的;并且要有一个 x-default 作为回退。Drupal 的翻译模型自动满足前两条,因为备选项是从翻译集生成的,而不是由编辑手工敲进去的。相比那些把 hreflang 做成插件字段、谁都可能忘记填的平台,这是实打实的优势。
仍然有两件事会出问题。x-default 的值不会自动设好,需要通过 Metatag 或模板补上。还有,只翻译了一部分的集合会产出一些指向回退到源语言页面的备选项,而这比干脆不做标注还要糟。
性能与 Core Web Vitals
Drupal 的缓存层属于核心,做得很好,而且经常因为某次没人记得收尾的调试而一直被关着。
渲染缓存把片段连同可缓存性元数据一起存起来:描述该片段所依赖数据的缓存标签、描述它随什么变化的缓存上下文,以及一个最大有效期。当底层实体发生变化时,标签会自动失效。元数据写错了,你要么发出过期页面,要么什么都缓存不了。
Internal Page Cache 向匿名访客提供完整页面。Dynamic Page Cache 通过缓存除个性化部分之外的一切,向任何用户提供页面。而 BigPipe 自 Drupal 8.1 起进入核心,并自 8.5 起成为标准安装配置的一部分,它会在首个响应已经发出之后,再把那些个性化占位符流式送达。
就 Core Web Vitals 而言,要点很有限。BigPipe 改善的是感知加载速度,而当它要填充的占位符没有预留空间时,反而可能让 Cumulative Layout Shift 变差。Drupal 站点的 Largest Contentful Paint 通常由主视觉图片和聚合后的 CSS 包决定,而不是由渲染缓存决定。Drupal 11.4 增加了在 PHP 扩展可用时生成 Brotli 压缩的 CSS 和 JavaScript 资源,对任何自行提供静态资源的站点来说,这都是一个干脆利落的收益。
大版本升级会破坏什么
Drupal 的大版本升级不是换平台,但它会以特定且反复出现的方式破坏搜索可见度。
贡献模块通常是罪魁祸首。如果 Metatag 还没有适配目标版本,站点却在缺了它的情况下上线,全站的元描述会一次性消失,而且直到两周后展示量下滑之前没有人会注意到。站点地图模块也一样,Redirect 的情况更糟,因为失去 Redirect 会让 canonical 强制停摆,所有旧别名统统复活。
第二个原因是没能挺过迁移的配置。Metatag 默认值、Pathauto 模式和站点地图的 bundle 设置都存放在配置里,一个只导入了内容而没有导入配置的重建站点,回来时带着默认模式,同样的内容却换了 URL。
动手之前先做一次完整抓取,把每个页面的 URL、状态码、标题、描述和 canonical 都记录下来,事后再拿同样的抓取做一次比对。我们的 Drupal 迁移指南 讲了各条版本路径以及与之绑定的期限。
Drupal 各版本目前的处境
时机会改变你合理的第一步是什么。Drupal 11.4.0 于 2026 年 7 月 1 日发布,11.4.x 分支的安全支持持续到 2027 年 6 月。2022 年 12 月 15 日发布的 Drupal 10 将在 2026 年 12 月 9 日终止生命周期 ,而 Drupal 12 排在 2026 年 12 月 7 日那一周,测试版预计在 2026 年 9 月中旬出现。
实际的结果是,在写下这段话的时候,一个 Drupal 10 站点大约只剩三个月的安全覆盖。任何在 Drupal 10 站点上委托的 SEO 工作,都应当排在升级之后而不是之前,因为反过来做意味着付两次钱:一次是修元数据,另一次是模块版本抬升、输出随之改变的时候。
Drupal 11.1 到 11.4 运行在 PHP 8.3 和 8.4 上,而 Drupal 10 至少需要 PHP 8.1。在共享主机上,真正卡住项目的往往是这个 PHP 下限,而不是 Drupal 这边的工作本身。
一次 Drupal SEO 项目要花多少钱
先把范围定清楚。Drupal SEO 项目不是一份报告,而是在一个具体代码库里做的配置工作和模板工作,交付物是一个被改动过的站点,不是一份文档。
基础审计覆盖那四个模块的组合及其配置方式、别名表与重定向表、分类法与视图的暴露面、站点地图的内容、结构化数据的输出,以及各层缓存。在一个只有几百个节点的站点上,这是三到五天的工作量。英国技术 SEO 的日费通常落在 600 到 1,200 英镑之间,所以这种形态的技术 SEO 审计 大致在 2,000 到 5,000 英镑之间,取决于人员资历和站点规模。
实施是另一件事,而且通常更大。在一个已有内容的线上站点上安装并配置 Pathauto、Metatag、Simple XML Sitemap 和 Redirect,意味着批量生成别名、为每一条会改变的别名建立重定向映射,以及写出不会塌缩成重复的描述模式。这个阶段请按审计费用的一到两倍预留预算。
带分面搜索的多语言 Drupal 站点会高于这个区间。英国代理机构做 Drupal 工作的日费大约是 600 到 900 英镑,这一点在我们关于 Drupal 开发者费率 的指南里有讲,而一个涉及多个翻译集和分面治理的项目,现实中是十到二十天。
把改动前后的抓取比对作为一项写明的交付物提出来。没有它,就没有任何证据证明真的改变了什么。
把顺序理顺
真正管用的顺序并不好看。先于一切安装并配置那四个模块,因为没有它们就做出的内容决策,之后都会变成返工。接着关掉重复 URL 的暴露面,因为它牵动站点上的每一个页面。然后是分类法与视图的暴露面,再然后是结构化数据,最后是性能。内容和链接排在技术层稳定之后,绝不在它之前。
Mecanik 按这个顺序把工作做成一次技术 SEO 审计 ,针对的是 Drupal 代码库及其配置,而不只是一次抓取结果,随后的实施则由 SEO 审计服务 承接。如果你还在犹豫 Drupal 究竟是不是合适的平台,我们的 Drupal 开发指南 以及无头 CMS 与传统 CMS 架构的比较 会是比这篇更合适的起点。
常见问题
Drupal 开箱即用适合 SEO 吗? 不适合。Drupal 核心提供路径别名、canonical 链接标签和多语言路由,但不提供元描述、不提供 XML 站点地图、不处理重定向,也不输出结构化数据。这些需要 Pathauto、Metatag、Simple XML Sitemap 和 Redirect 模块,它们全都是贡献模块而非核心。原装安装不是优化得差,而是根本没有优化。
一个 Drupal 站点实际需要哪些 SEO 模块? 事实上不可或缺的有四个:负责自动生成 URL 别名的 Pathauto、负责元描述和社交标签的 Metatag、负责站点地图本身的 Simple XML Sitemap,以及负责重定向和 canonical URL 强制的 Redirect。如果你想输出结构化数据又不愿在 Twig 模板里手写 JSON-LD,第五个通常是 Schema.org Metatag。
我加了 URL 别名之后,为什么 /node/123 还能打开? 因为 Drupal 的别名不会让内部路径退休。两个地址都会以 200 状态返回完整页面。核心会输出一个指向别名的 canonical 标签,而 Google 把它当作强信号而不是指令,所以可靠的解法是 Redirect 模块的 canonical URL 强制,它会把重复项变成永久重定向。
Pathauto、Metatag 和 Simple XML Sitemap 兼容 Drupal 11 吗? 兼容,而且这套核心组合的四个模块都在积极维护。Pathauto 8.x-1.15 支持 Drupal 10.2 和 11,Metatag 2.2.0 需要 Drupal 10.3 或 11,Simple XML Sitemap 4.2.3 需要 Drupal 10.3 或 11,Redirect 8.x-1.13 支持 Drupal 10 和 11。四个都受 Drupal 安全公告政策覆盖。
在英国做一次 Drupal SEO 项目要花多少钱? 一次覆盖模块组合、别名表与重定向表、分类法暴露面、站点地图和结构化数据的配置审计,在中等规模站点上需要三到五天,按英国技术 SEO 日费 600 到 1,200 英镑计算,大致是 2,000 到 5,000 英镑。实施通常还要再花审计费用的一到两倍。