Vercel后缀斜杠 - trailingSlash

Vercel后缀斜杠trailingSlash #


一、vercel.json配置机制 #

vercel提供一种通用配置机制,在项目根目录放置一个vercel.json文件,就能对vercel容器行为进行各种配置(甚至包括rewrite等)。

如下面的配置,是将没有后缀斜线URL的访问请求,都默认追加上/

{
    "trailingSlash": true 
}
// doc.toast.pub/foo 会转发至 doc.toast.pub/foo/
// 但doc.toast.pub/foo.css会安全保持原样

二、图片相对地址计算错误 #

起因是ToastDoc在vercel部署好之后,一篇文档里的图片一会正常一会报错。
最后是发现是访问网页的URL不同。

" 图片正常时的URL
https://doc.toast.pub/articles/docs/hugo/hugo-book-multilang-search/

" 图片报错时的URL
https://doc.toast.pub/articles/docs/hugo/hugo-book-multilang-search

第一个URL结尾多了一个斜线,而我文章里的图片地址用的是相对路径

<img src="./toast.webp" />

有没有后缀斜杠,直接影响了相对路径的解析

前者图片解析地址(正确):
doc.toast.pub/articles/docs/hugo/hugo-book-multilang-search/toast.webp

后者图片解析地址(错误):
doc.toast.pub/articles/docs/hugo/toast.webp 

三、TrailingSlash圣战 #

原理简单不啰嗦。一般得配置http server的rewrite,而vercel提供了很棒的配置入口:vercel.json。

过程发现关于TrailingSlash的规范问题在前端技术里是容易撕起来的话题。在hugo社区围观了两个大神讨论,以及google也表达过好几次。

非web技术,不熟悉就不选边站了,后面详细了解讨论(对撕)过程。
先用相对地址书写更简单,先选择配置trailingSlash

  • 编辑器圣战: Vim vs Emacs
  • 代码风格圣战: Tab vs Blank
  • Web圣战: TrailingSlash vs Trimmed Slash