Обработчик FileServer с некоторыми другими обработчиками HTTP - программирование
Подтвердить что ты не робот

Обработчик FileServer с некоторыми другими обработчиками HTTP

Я пытаюсь запустить 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?

4b9b3361