

Caddy2 file server 自动重定向问题 - bleem
source link: https://mritd.com/2021/07/02/fix-caddy2-fileserver-auto-redirect/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一、事情起因
自打很多年前开始使用静态博客工具来发布博客,现在基本上博客源码编译后就是一堆 html 等静态文件;一开始使用 nginx 作为静态文件服务器,后来切换到的 Caddy2;不过最近在 Google Search Console 中发现了大量的无效链接,给出的提示是 “网页会自动重定向”。
经过测试后发现这些链接地址在访问时都会重定向一下,然后在结尾加上 /
;没办法我就开始探索这个 /
是怎么来的了。
二、源码分析
没办法,也不知道那个配置影响的,只能去翻 file server 的源码,在几经查找之后找到了以下代码(而且还带着注释):
从代码逻辑上看,只要 *fsrv.CanonicalURIs
这个变量为 true
,那么就会触发自动重定像,并在 “目录” 尾部补上 /
;注释里也说的很清楚是为了目录规范化,如果想看详细讨论可以参考那两个 issue。
三、解决方案
3.1、Admin API
翻了这个 *fsrv.CanonicalURIs
变量以后,突然发现 Caddyfile 里其实是不支持这个配置的;所以比较 low 的办法就是利用 Admin API,先把 json 弄出来,然后加上配置再。POST 回去:
{
"apps": {
"http": {
"servers": {
"srv0": {
"listen": [
":80"
],
"routes": [
{
"handle": [
{
+ "canonical_uris": false,
"handler": "file_server",
"hide": [
"./Caddyfile"
]
}
]
}
]
}
}
}
}
}
curl -XPOST http://localhost:2019/load -H "Content-Type: application/json" -d @caddy.json
3.2、升级版本
现在可以直接从 master 构建 Caddy,或者等待 v2.4.4
版本发布,这两种方式产生的 Caddy 二进制文件已经支持了这个配置选项,配置样例如下:
:80
file_server {
disable_canonical_uris
}
Recommend
-
8
发现大部分人在切换 Caddy 时遇到的比较大的困难就是这个 Caddyfile 不知道怎么写,一开始我也是很懵逼的状态,今天决定写写这个 Caddyfile 配置语法,顺便自己也完整的学学。一、Caddy 配置体系在 Caddy1 时代,Cadd...
-
12
本文所有源码分析基于 Go 1.16.4,阅读时请自行切换版本。一、Context 介绍标准库中的 Context 是一个接口,其具体实现有很多种;Context 在 Go 1.7 中被添加入标准库,主要用于跨多个 Goroutine 设置截止时间、同步...
-
14
本文所有源码分析基于 Caddy2 v2.4.2 版本进行,未来版本可能源码会有变化,阅读本文时请自行将源码切换到 v2.4.2 版本。一、这玩意是什么?Caddy2 对配置文件中的 listener_wrappers 配置有以下描述:
-
3
所谓工欲善其事,必先利其器;这篇文章分享一些日常 Coding 中常用 JetBrains 系列 IDE 插件(本文所有插件可直接从 Marketplace 搜索并安装)。One Dark theme上来先整点没用的吧,主题配色这个东西根据个人喜好;我比...
-
4
使用Caddy2托管静态博客 发表于 2021-10-16 | 0 Comments | 阅读次数: 15 字数统计: 529 字 | 阅读时长 ≈ 2 分钟...
-
8
一、方案选型目前对于 WebP 和 AVIF 格式支持大致有两种方案, 一种是动态转换, 另一种是静态转换.动态转换: 即在流量的代理层进行处理, 实现对用户的透明化, 用户无需进行任何更改, 由负载均衡器或者中间件进行动态转换处理.静态...
-
9
Caddy2 简明教程Cad_ 2021年1月7日 下午 9.4k 字 29 分钟Caddy 是一个 Go 编写的 Web 服务器,类似于 Nginx,Caddy 提供了更加强大的功能,随着 v2 版本发布 Caddy 已经可以作为中小型站点...
-
19
不带www顶级域名自动跳转访问二级域名:根域名301重定向www https://www.chenweiliang.com/cwl-27630.html
-
3
Scrapy 解决URL被重定向无法抓取到数据问题301和302 发表于 2019-...
-
7
V2EX › PHP laravel 重定向 https 变 http 问题 exqib...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK