seo url 怎么起:官方六条规则,和一条把 sitemap 全跑一遍的命令

seo url 的合格线是:能读懂的单词、连字符、参数尽量少、大小写只有一种。Google 把这写成抓取的前提条件,本篇给六条原话加一条能直接粘的自查命令。

抓取与收录6 分钟读完870 次阅读
seo url 怎么起:官方六条规则,和一条把 sitemap 全跑一遍的命令

一个合格的 seo url 长这样:能读懂的单词、词之间用连字符、参数尽量少、大小写只有一种。这不是审美偏好,Google 把它写成抓取的前提条件 —— 那页开门见山要求你 "use a crawlable URL structure",并且写明地址不符合这些条件时,"Google Search will likely crawl your site inefficiently — including but not limited to extremely high crawl rates, or not at all"。

开始之前

这一篇讲的是还没建出来的页面、或者你正要新开的一个栏目,地址该怎么起。已经在排名的页面改地址是另一件事,代价清单在 301 跳转之外 那篇里。如果你手上已经有两个地址指着同一个页面、要挑一个留下,那是 canonical 标签怎么写,不是这一篇。

seo url 的六条规则,官方原话

六条,每一条都短到可以用眼睛核。下面右列是 Google 的原话,本日抓取。

规则官方原话
用词不用 ID"Use readable words rather than long ID numbers in your URLs."
用读者的语言"Use words in your audience's language in the URL"
连字符"using hyphens (-) instead of underscores (_)"
编码"non-ASCII range should be percent encoded"
参数"trimming unnecessary parameters"
大小写"URLs are case sensitive"

连字符那条后面跟着理由,值得一起记住,因为它解释了整张表:官方说用连字符是因为它 "helps users and search engines better identify concepts in the URL"。地址是页面上唯一在页面加载之前就被读到的东西 —— 人先读它,机器也先读它。

网址是你这一页里唯一在页面打开之前就被读过的部分。

中文站到底能不能用中文做地址

能,而且官方那条「用读者的语言」本来就包含这种情况。但要接受它长什么样:非 ASCII 字符必须做百分号编码,所以浏览器地址栏里显示成中文的那个地址,写进 sitemap、写进内链、贴进日志之后,是一串 %E4%B8%AD%E6%96%87。看着吓人,它是合规的,不是错误。

真正要判的不是它丑不丑,是这批读者在哪一侧。站是给海外用户看的,那目标语言就是英文,地址就该是英文词 —— 官方那条说的是「你的读者的语言」,不是「你自己的语言」。做出海站却把中文塞进地址,是把这条规则用反了方向。

顺带说一句常被忽略的:六条规则底下还压着一句最少被引用的要求 —— 遵循 IETF STD 66,也就是定义 URI 长什么样的那份标准。上面六条里大部分是这份标准的白话版。知道这一点的意义在于知道权威从哪儿来:它们不是搜索引擎自己发明的偏好,而是地址本来就被规定成的样子,一个违反它的路由,会在和搜索毫无关系的地方先坏掉。

真正造成损失的是参数

Google 点名了三类,每一类都把一个页面变成很多个地址:追踪参数,比如 ?click=6EE2BF1AF6A3D705D5561B7C3564D9C2;商品排序参数,比如 ?search_sort=relevance;还有 session ID,官方给的替代方案很直接 —— 改用 cookie。

另外两种形态也被点名要避开。写坏的相对链接会生成一个没有边界的地址集合,没有终止日期的日历页会主动做同一件事,官方对日历那种情况给的做法是给指向未来日期的链接加 nofollow。这两种都在给爬虫制造工作量,而这些工作量不产生任何回报。

还有一条是关于内容怎么切换的:"Don't use URL fragments to change content"。# 后面那一段根本不会发给服务器,所以靠改锚点换内容的页面,是很多个状态共用一个地址。官方给的替代方案是 History API。

新开一个栏目的五步

做一次二十分钟,之后它是模板层的决定,不再是每篇文章的决定。

  1. 先写地址,再写页面。如果一个页面没法用三四个连字符单词说清楚,说明它讲了不止一件事 —— 地址在替你指出这一点。
  2. 定死一种大小写,用小写,并且在路由层强制。官方明写地址区分大小写,也就是说在你做出决定之前,/Handbook/handbook 是两个页面。
  3. 把「哪些参数允许改变访客看到的内容」列出来。除此之外的追踪、排序、会话参数,要么不进地址,要么不产生一个可被收录的独立页面。
  4. 多地区形态现在就定。官方列的是国家域名 example.de 和国家子目录 example.com/de/,两种都在列,但以后换一种等于把所有地址搬一遍。
  5. 用下面那条命令跑一遍 sitemap,在这个栏目还没有任何外部链接指进来之前,先把打印出来的问题改掉。

交付物:把 sitemap 里所有地址跑一遍

一条命令。它只打印有问题的地址,所以没有输出就是干净的。

curl -s https://example.com/sitemap.xml \
| grep -o '<loc>[^<]*</loc>' | sed 's/<[^>]*>//g' \
| python3 -c '
import sys, urllib.parse
for line in sys.stdin:
    u = line.strip()
    p = urllib.parse.urlparse(u)
    bad = []
    if "_" in p.path: bad.append("下划线")
    if p.path != p.path.lower(): bad.append("有大写")
    if p.query: bad.append("带参数")
    if p.fragment: bad.append("带锚点")
    if any(ord(c) > 127 for c in u): bad.append("未编码非 ASCII")
    if len(u) > 115: bad.append("长度 %d" % len(u))
    if bad: print(u, "|", ", ".join(bad))
'

其中 115 这个长度阈值是我们定的,不是 Google 的 —— 官方文档没给任何长度上限,115 只是一个地址在搜索结果和 AI 引用里开始被截断的位置。这一列当成「看一眼」的提示,不是失败项。

打印出什么怎么处理
下划线新页面改用连字符
有大写跳转到小写那个地址
带参数确认它真的改变内容
带锚点从 sitemap 里去掉
非 ASCII做百分号编码
长度看一眼,通常不动

三种以后要还的债

三种当时都觉得不花钱。

  1. 把日期放进地址。/2024/03/how-to-x 等于把页面的年龄公开写在地址上,更新过一次之后它看起来仍然是一篇老文,而唯一的补救办法是一次本来不必发生的搬迁。
  2. 为了整齐而改名。每改一次就要花掉跳转、内链,还有这一页攒下来的东西;地址变得「好看一点」几乎从来不值这个价。
  3. 让 CMS 替你决定。WordPress 默认那种带文章 ID 的地址,正是官方第一条点名要避开的形态,而且等站上有了几百个页面之后最难改。

seo url 管不到的地方

这套规则不会让页面排得更高。官方整页讲的都是抓取效率,文档里最强的一句话说的也是抓取行为,不是位置。地址起得再规范,页面本身取不到也是白搭 —— 爬虫到底能不能到你这儿,用 AI 爬虫可达性检查 单独跑一遍就知道。

还有一件事我们说不了:一个坏地址到底损失多少流量。这个数没有公开来源,你在别处见过的任何一个百分比都是编的。把地址做对的真实理由是它长期不变,而且创建那一刻是免费的,之后每一刻都要花钱。

常见问题

连字符和下划线真的有区别吗?

Google 明确推荐连字符,理由是它帮人和搜索引擎把地址里的概念分开。下划线不算错,只是更难读的那一种。

网址能有多长?

官方没有给上限。短地址的好处在于它在搜索结果和引用里能完整显示,这是可读性的理由,不是排名的理由。

做出海站,地址要用英文还是中文?

用你读者的语言。站是给海外用户看的就用英文词,官方那条说的是读者的语言,不是站长的语言。

地址区分大小写吗?

区分,官方要你注意这一点。只对外提供一种写法,另一种做跳转,否则一个页面就有了两个地址。

地址里到底能不能带参数?

能,按标准写法来:键和值之间用等号,多个参数之间用与号。留下会改变读者看到的内容的那些,其余去掉。

做多语言站,要买国家域名还是用子目录?

官方把国家域名和国家子目录并排列出来,两种都在文档里,所以不存在哪一种更「正确」。按你运维得起哪一种选:子目录是一套部署,一组国家域名是好几套。这个决定要在第一个本地化页面上线之前做完,因为两种形态之间换来换去的成本非常高。

本文属于 QueryWin 实操手册 · 第 2 阶

seo url 怎么起:官方六条规则,和一条把 sitemap 全跑一遍的命令