URL 是网站里最难改的东西:它同时牵着收录、外链、内链、站点地图和用户的记忆。上线前半小时的决定,会影响三年。
第一步:把固定链接改成文章名
WordPress「设置 → 固定链接」,不要用默认的 ?p=123。选「文章名」,即 /%postname%/。原因很直接:
- 带关键词的 URL 对客户和爬虫都更易读
- 分享时看起来更可信
- 默认结构会让很多插件(构建器、REST、WooCommerce 回调)出问题,见 编辑器加载失败
改完之后要确认 Apache 或 nginx 的伪静态生效,否则所有内页 404。这个坑在 Docker 与自建环境里最常见。
Slug 命名五条规则
- 全小写,单词用连字符分隔,不用下划线
- 短:三到五个词。堆满关键词的长 slug 没有加分,只有噪声
- 不带年份、不带编号,除非它真的是序列内容
- 不含停用词也可以(the、of、a 一律省掉)
- 发布前定稿。发布后改 slug 就要背一条 301
举例对比:
| 不好 | 好 |
|---|---|
| /?p=482 | /what-is-sitemap/ |
| /2025-the-best-cheap-and-high-quality-wordpress-hosting-reviews-for-foreign-trade/ | /how-to-choose-wordpress-hosting/ |
| /Product_Detail.php?id=88 | /stainless-steel-tumbler-900ml/ |
一个真实的坑:分类 slug 和页面 slug 撞名
想给 SEO 分类一个 /seo/ 的漂亮地址,同时你又有一个叫 seo 的页面,两者会冲突。WordPress 的处理是给分类加前缀,实际地址变成 /category/seo/。所以:
- 要么让分类归档用 /category/%slug%/,内页 hub 用 /seo/ 这样的页面承载(本站就是这个结构:页面做导航,分类做归档)
- 要么给分类改个不冲突的 slug
- 不要为了 URL 好看把 hub 页面和分类归档做成两份内容高度重复的页,那会变成自我竞争,见 站点地图 里「内容太薄」那一段
产品 URL 同理:WooCommerce 默认是 /product/型号名/,可以改成 /products/%slug%/,但要一次改完并把旧的 301 过去。
层级与面包屑
URL 层级不必反映站点目录树。/tumbler-900ml/ 比 /products/kitchen/drinkware/steel/tumbler-900ml/ 更好记,只要面包屑和内链把这个层级关系表达出来就行。谷歌读的是链接关系,不是 URL 里的斜杠。
参数页与抓取预算
每个带 ?s=、?add-to-cart=、?orderby=、UTM 的变体都是潜在重复页。处理方式:
- 站内搜索结果页 noindex(在 SEO 插件里设)
- 排序与筛选组合:保留规范链接指向无参数版本,别指望 robots 解决,见 Robots.txt 的误区
- UTM 链接保持可抓取但 canonical 指向干净 URL
- 分页用 rel next 与 prev 由插件自动处理,别自己封
必须改 URL 时怎么做
- 改前先导出当前 URL 清单(站点地图抓一份,或用插件导出)
- 改后用 Redirection 建 301,一对一,不要通配到首页
- 站内所有内链同步更新,靠搜索替换处理,注意序列化数据要用专用工具
- 重新提交站点地图
- 四周后看 Search Console 的「已抓取但未编入索引」和「重定向」两类报告,确认旧地址正在消退
URL 结构的成本曲线是:上线前决定几乎免费,改十条是半天的事,改三千条并且带外链的就是一次事故。所以这一步别省。