网址末尾的斜杠有没有区别?

网址末尾多一个斜杠,多数时候照样打开,但在规范里它们是两个不同的地址。差别体现在相对链接、缓存和收录上。

第 3 期讲过网址的组成,路径是斜杠分隔的那一段。规范里,路径为空和路径是单个斜杠,算两个不同的地址:/a 和 /a/ 会被当作两条不同的记录。

多数服务器会把它们指向同一个页面,所以日常访问感觉不出差别。但服务器也可以让它们指向不同内容:有的把不带斜杠的当文件、带斜杠的当目录,静态站点尤其容易这样配置,因为文件系统里"文件"和"目录"本来就是两回事。

真正容易出错的是相对链接。以 /a/ 为基准,页面里的相对链接解析出来的位置,和以 /a 为基准算出来的不一样。少一个斜杠,页面样式、图片、跳转就可能全部指错地方。

对缓存和收录也有影响:同一个页面有了两个地址,会被当成两份内容分别缓存、分别收录。常见的做法是用永久跳转把其中一个统一到另一个,让访问者最终都停在同一个地址上。

所以斜杠不是可有可无的装饰,它会进入地址的规范形式,只是多数时候被服务器和服务商的配置掩盖了。第 171 期讲的井号片段,是另一种"看起来差不多、实际是另一段"的情况。