Я пытаюсь запустить HTTP-сервер в Go, который будет обслуживать мои собственные данные, используя мои собственные обработчики, но в то же время я хотел бы использовать файл http FileServer по умолчанию для обслуживания файлов.
У меня возникают проблемы с тем, чтобы обработчик FileServer работал в подкаталоге URL.
Этот код не работает:
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.Handle("/files/", http.FileServer(http.Dir(".")))
http.HandleFunc("/hello", myhandler)
err := http.ListenAndServe(":1234", nil)
if err != nil {
log.Fatal("Error listening: ", err)
}
}
func myhandler(w http.ResponseWriter, req *http.Request) {
fmt.Fprintln(w, "Hello!")
}
Я ожидал найти локальный каталог в localhost: 1234/files/, но он возвращает 404 page not found
.
Однако, если я изменил адрес обработчика файлового сервера на /, он работает:
/* ... */
http.Handle("/", http.FileServer(http.Dir(".")))
Но теперь мои файлы доступны и видны в корневом каталоге.
Как я могу заставить его обслуживать файлы с другого URL-адреса, кроме root?