mirror of
https://github.com/caddyserver/caddy.git
synced 2025-01-19 01:05:37 +03:00
staticfiles: fix handling of filenames that end with index file names (#1812)
* static files ending with an index were redirected improperly * optimize requestPage
This commit is contained in:
parent
bd67ec99f0
commit
4e52b3fe8a
2 changed files with 11 additions and 1 deletions
|
@ -106,8 +106,9 @@ func (fs FileServer) serveFile(w http.ResponseWriter, r *http.Request) (int, err
|
|||
|
||||
// if an index file was explicitly requested, strip file name from the request
|
||||
// ("/foo/index.html" -> "/foo/")
|
||||
var requestPage = path.Base(urlCopy.Path)
|
||||
for _, indexPage := range IndexPages {
|
||||
if strings.HasSuffix(urlCopy.Path, indexPage) {
|
||||
if requestPage == indexPage {
|
||||
urlCopy.Path = urlCopy.Path[:len(urlCopy.Path)-len(indexPage)]
|
||||
redir = true
|
||||
break
|
||||
|
|
|
@ -219,6 +219,13 @@ func TestServeHTTP(t *testing.T) {
|
|||
expectedLocation: "https://foo/bar/file1.html",
|
||||
expectedBodyContent: movedPermanently,
|
||||
},
|
||||
{
|
||||
url: "https://foo/notindex.html",
|
||||
expectedStatus: http.StatusOK,
|
||||
expectedBodyContent: testFiles[webrootNotIndexHTML],
|
||||
expectedEtag: `"2n9cm"`,
|
||||
expectedContentLength: strconv.Itoa(len(testFiles[webrootNotIndexHTML])),
|
||||
},
|
||||
}
|
||||
|
||||
for i, test := range tests {
|
||||
|
@ -493,6 +500,7 @@ func TestServeHTTPFailingStat(t *testing.T) {
|
|||
// Paths for the fake site used temporarily during testing.
|
||||
var (
|
||||
webrootFile1HTML = filepath.Join(webrootName, "file1.html")
|
||||
webrootNotIndexHTML = filepath.Join(webrootName, "notindex.html")
|
||||
webrootDirFile2HTML = filepath.Join(webrootName, "dir", "file2.html")
|
||||
webrootDirHiddenHTML = filepath.Join(webrootName, "dir", "hidden.html")
|
||||
webrootDirwithindexIndeHTML = filepath.Join(webrootName, "dirwithindex", "index.html")
|
||||
|
@ -519,6 +527,7 @@ var (
|
|||
var testFiles = map[string]string{
|
||||
"unreachable.html": "<h1>must not leak</h1>",
|
||||
webrootFile1HTML: "<h1>file1.html</h1>",
|
||||
webrootNotIndexHTML: "<h1>notindex.html</h1>",
|
||||
webrootDirFile2HTML: "<h1>dir/file2.html</h1>",
|
||||
webrootDirwithindexIndeHTML: "<h1>dirwithindex/index.html</h1>",
|
||||
webrootDirHiddenHTML: "<h1>dir/hidden.html</h1>",
|
||||
|
|
Loading…
Reference in a new issue