diff --git a/caddytest/integration/caddyfile_adapt/file_server_hide_repeated.caddyfiletest b/caddytest/integration/caddyfile_adapt/file_server_hide_repeated.caddyfiletest new file mode 100644 index 000000000..14ec13e95 --- /dev/null +++ b/caddytest/integration/caddyfile_adapt/file_server_hide_repeated.caddyfiletest @@ -0,0 +1,35 @@ +:80 + +file_server { + hide first.txt + hide second.txt third.txt +} +---------- +{ + "apps": { + "http": { + "servers": { + "srv0": { + "listen": [ + ":80" + ], + "routes": [ + { + "handle": [ + { + "handler": "file_server", + "hide": [ + "first.txt", + "second.txt", + "third.txt", + "./Caddyfile" + ] + } + ] + } + ] + } + } + } + } +} diff --git a/modules/caddyhttp/fileserver/caddyfile.go b/modules/caddyhttp/fileserver/caddyfile.go index 80a37322b..4000690b9 100644 --- a/modules/caddyhttp/fileserver/caddyfile.go +++ b/modules/caddyhttp/fileserver/caddyfile.go @@ -91,10 +91,14 @@ func (fsrv *FileServer) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { fsrv.FileSystem = d.Val() case "hide": - fsrv.Hide = d.RemainingArgs() - if len(fsrv.Hide) == 0 { + hide := d.RemainingArgs() + if len(hide) == 0 { return d.ArgErr() } + // Append so that repeated "hide" subdirectives accumulate + // instead of overwriting, which also lets imported snippets + // compose with site-specific hides. + fsrv.Hide = append(fsrv.Hide, hide...) case "index": fsrv.IndexNames = d.RemainingArgs()