Caddy2 file server 自动重定向问题
一、事情起因
自打很多年前开始使用静态博客工具来发布博客,现在基本上博客源码编译后就是一堆 html 等静态文件;一开始使用 nginx 作为静态文件服务器,后来切换到的 Caddy2;不过最近在 Google Search Console 中发现了大量的无效链接,给出的提示是 “网页会自动重定向”。
经过测试后发现这些链接地址在访问时都会重定向一下,然后在结尾加上 /
;没办法我就开始探索这个 /
是怎么来的了。
二、源码分析
没办法,也不知道那个配置影响的,只能去翻 file server 的源码,在几经查找之后找到了以下代码(而且还带着注释):
从代码逻辑上看,只要 *fsrv.CanonicalURIs
这个变量为 true
,那么就会触发自动重定像,并在 “目录” 尾部补上 /
;注释里也说的很清楚是为了目录规范化,如果想看详细讨论可以参考那两个 issue。
三、解决方案
3.1、Admin API
翻了这个 *fsrv.CanonicalURIs
变量以后,突然发现 Caddyfile 里其实是不支持这个配置的;所以比较 low 的办法就是利用 Admin API,先把 json 弄出来,然后加上配置再。POST 回去:
1 |
|
1 |
|
3.2、升级版本
现在可以直接从 master 构建 Caddy,或者等待 v2.4.4
版本发布,这两种方式产生的 Caddy 二进制文件已经支持了这个配置选项,配置样例如下:
1 |
|
Caddy2 file server 自动重定向问题
https://mritd.com/2021/07/02/fix-caddy2-fileserver-auto-redirect/