Удалить завершающую косую черту с URL-адресов - перейти на статический сервер

Я установил простой статический файловый сервер Go с http.FileServer. Если у меня есть структура каталогов вродеpublic > about > index.html, сервер правильно разрешит /about к about > index.html, но в конце добавляется косая черта, поэтому URL-адрес становится /about/.

Есть ли простой способ удалить эти конечные косые черты при использовании http.FileServer? В конечном счете, это работает в любом случае - в основном это личное предпочтение, чтобы по возможности не использовать косую черту в конце.

1 ответ

При регистрации маршрута /about/ неявный маршрут /about добавлен (который перенаправляет клиентов на /about/).

Чтобы обойти это, вы можете зарегистрировать два явных маршрута:

  • /about служить вашему index.html
  • /about/ служить http.FileServer для обработки любых ресурсов HTML для страницы

вот так:

// what you had before
h.Handle("/about/",
    http.StripPrefix(
        "/about/",
        http.FileServer(http.Dir("/tmp/about-files")),
    ),
)

// prevents implicit redirect to `/about/`
h.HandleFunc("/about",
    func(w http.ResponseWriter, r *http.Request) {
        http.ServeFile(w, r, "index.html") // serves a single file from this route
    },
)

https://play.golang.org/p/WLwLPV5WuJm

Другие вопросы по тегам