Недавно я попросил об обслуживании статического содержимого и обработке 404 с использованием мультика Gorilla; при использовании ручки вместо PATHPREFIX, приложение может служить корневой страницы (http://localhost:8888):Обслуживание статического содержимого и обработки 404 не найдено с помощью инструментария Gorilla
func main() {
r := mux.NewRouter()
r.HandleFunc("/myService", ServiceHandler)
r.Handle("/", http.FileServer(http.Dir("./static")))
r.NotFoundHandler = http.HandlerFunc(notFound)
l, _ := net.Listen("tcp", "8888")
http.Serve(l, r)
}
Однако запросы на страницы в пределах страницы (например, корневого http://localhost:8888/demo/page1.html) получают перехвачены 404 обработчика. Есть ли способ предотвратить это, в то время как ловить запросы на несуществующие страницы или службы? Это структура каталогов:
...
main.go
static\
| index.html
demo\
page1.html
demo.js
demo.css
| jquery\
| <js files>
| images\
| <png files>
Предыдущий вопрос:
Я использую мультиплексорная инструментарий Gorilla для обработки запросов HTTP в виде приложения веб-сервера:
func main() {
r := mux.NewRouter()
r.HandleFunc("/myService", ServiceHandler)
r.PathPrefix("/").Handler(http.FileServer(http.Dir("./static")))
l, _ := net.Listen("tcp", "8888")
http.Serve(l, r)
}
Я хочу, чтобы добавить обработчик для недействительных URLS, но он никогда не вызывается:
func main() {
r := mux.NewRouter()
r.HandleFunc("/myService", ServiceHandler)
r.NotFoundHandler = http.HandlerFunc(notFound)
r.PathPrefix("/").Handler(http.FileServer(http.Dir("static")))
l, _ := net.Listen("tcp", "8888")
http.Serve(l, r)
}
Если я удаляю статический обработчик, d обработчик. Тем не менее, приложение должно обслуживать статический контент, исходя из не абсолютного пути. Есть ли способ объединить это с обработкой 404?
Какова структура вашего каталога? – MIkCode
Добавлено на вопрос –