首页 / SEO book / 网站架构与迁移 / 末尾斜杠

什么是末尾斜杠,它何时重要

末尾斜杠网站架构与迁移

过去,文件夹会带末尾斜杠,而文件不带末尾斜杠。文件夹表示里面还有更多文件,通常会有一个索引文件(index.html、index.php 等),页面的内容会从中加载。

末尾斜杠(trailing slash)是放在 URL 末尾的正斜杠(“/”),例如 domain.com/ 或 domain.com/page/。末尾斜杠通常用来区分带末尾斜杠的目录和不带末尾斜杠的文件。不过,这些只是指导原则,并非硬性要求。

过去,文件夹会带末尾斜杠,而文件不带末尾斜杠。文件夹表示里面还有更多文件,你通常会有一个索引文件(index.html、index.php 等),页面的内容会从中加载。所以内容可能来自 domain.com/page/index.html,但展示给用户的是 domain.com/page/。而对于单个文件,你会有文件名,末尾不带斜杠。

如今,大多数系统中的 URL 并不指向文件。URL 是存储在数据库中的一条记录。无服务器系统甚至根本不把文件托管在你的服务器上。

不同的 URL 结构可能会被区别对待。你选择用不用末尾斜杠,更多是个人偏好,而非其他。我们来看一些常见情形。

域名之后的末尾斜杠无关紧要

[['Text', 'domain.com']] = [['Text', 'domain.com/']]

这些 URL 被完全同样地对待,用哪个版本都无所谓。

末尾斜杠对其他 URL 很重要

[['Text', 'domain.com/page']] ≠ [['Text', 'domain.com/page/']]

除了紧跟在根域名之后的那一个末尾斜杠之外,其他任何情况下,末尾斜杠都会被当作一个独立的 URL。

文件不应以斜杠结尾

在大多数情况下,如果你给诸如 .html、.php、.js、.css、.pdf、.jpg 等文件加上末尾斜杠,文件将无法加载。这是因为大多数系统会假设该文件是一个文件夹,而由于这个路径之后什么都没有,通常会返回 404 页面。

现在我们来看看它对 SEO 的影响。

末尾斜杠与 SEO

你可能会根据系统的运作方式做出不同的决定。以下是你可能遇到的一些常见情形。

带末尾斜杠和不带末尾斜杠的 URL 显示相同内容

正如我之前提到的,如果你的内容在页面的带末尾斜杠版本和不带末尾斜杠版本上都能看到,这些页面可能会被当作独立的 URL。这里通常的担忧是,不同版本上的内容会造成重复内容。在大多数情况下,这不应成为问题,因为规范标签很可能会指定一个首选版本。即使没有规范标签,Google 通常也会为你挑选一个首选版本,并在此合并各项信号。如果你想,也可以强制让 URL 指向你偏好的版本。

无论你决定用不用末尾斜杠,你都要确保所有不同的规范化信号,比如重定向、站点地图、内链、规范标签等,都指向你希望被索引的那个版本。

带末尾斜杠和不带末尾斜杠的 URL 显示不同内容

在某些情况下,当你有两个系统共享同一个文件夹结构,或使用某些 A/B 测试软件时,你可能会遇到一个 URL 带末尾斜杠和不带末尾斜杠的版本显示完全不同内容的情形。在这些情况下,你最好挑选一个版本用于索引和展示给用户,然后把另一个版本重定向到它。

Hreflang

在涉及 hreflang 的更复杂设置中,你可能会遇到问题。Hreflang 链接应指向页面的已索引版本。如果规范标签指向页面的带末尾斜杠版本,Google 也据此索引页面,但 hreflang 标签指向页面的不带末尾斜杠版本,那么这些 hreflang 标签可能不会被遵循。

添加或移除末尾斜杠

这个过程会因你的系统而异。在做任何更改之前,最好先查阅相关文档。

.htaccess

移除斜杠:

添加斜杠:

WordPress

如果你进入 Settings > Permalinks(设置 > 固定链接),当使用自定义结构时,你可以更改是否使用末尾斜杠。

[['Text', '/%postname%/']] 会给 URL 添加末尾斜杠

[['Text', '/%postname%']] 会从 URL 移除末尾斜杠

JavaScript 框架

由于它们有路由器(router),这些系统可能和你习惯的略有不同。你既可以在路由器中自定义 URL 的工作方式,或者——如果你不想在这上面花太多时间——这些系统大多有预置模块来添加或移除末尾斜杠。

末尾斜杠对报告/统计的影响

在决定是否使用末尾斜杠时,应当考虑报告/统计。例如,在 Google Search Console 中,你可以设置域属性或 URL 前缀属性。如果在设置 URL 前缀属性时你没有包含末尾斜杠(例如 domain/folder),Google 无论如何都会加上一个。结果是,所有对 domain.com/folder(不带末尾斜杠)的访问都不会被报告,因为 domain.com/folder/(带末尾斜杠)高了一个层级。

如果你的主页没有带斜杠,Google Analytics(GA)在尝试按文件夹做内容下钻时也会遇到同样的问题。如果你的 URL 带斜杠和不带斜杠的版本都能正常工作,那么两者都可能在 GA 中被报告。

如果你想合并数据,可以添加一个筛选器(如下所示),强制你的分析报告中 URL 带上末尾斜杠。

正则表达式如下:[['Text', '^(/[a-z0–9/_-]*[^/])$']]

结语

更改总是有风险,所以除非你的设置正在引发问题,否则我不会强行去更改你的 URL。技术已经改变,过去关于斜杠的 URL 惯例在大多数现代网站上已不再适用。