我正在使用net/http
的{{1}}处理程序为certbot设置文件服务器处理程序,并遇到一些奇怪的行为,将文件服务器的根目录设置为隐藏目录。
我的目录结构如下:
FileServer
所有用户/组/权限相同。
以下处理程序无法提供test.txt(为GET /.well-known/test.txt返回404):
certbot/
|- .well-known/
| |- test.txt
|- well-known/
|- test.txt
然而,这些都有效:
http.Handle("/.well-known/", http.StripPrefix("/.well-known/", http.FileServer(http.Dir("./certbot/.well-known"))))
我想知道为什么在从http.Handle("/.well-known/", http.StripPrefix("/.well-known/", http.FileServer(http.Dir("./certbot/well-known"))))
http.Handle("/.well-known/", http.StripPrefix("/.well-known/", http.FileServer(http.Dir("./certbot/.well-known/"))))
提供而不是从./certbot/.well-known
提供时,我必须添加尾部斜杠。 net/http source code中没有任何内容会导致这种情况发生。 http.Dir documentation表示它将允许访问以句点开头的目录。为什么在一个处理程序中需要尾部斜杠而不是另一个处理程序?
我正在使用CentOS 7 Digital Ocean液滴上的v1.9.2。