Я пытаюсь перенаправить все запросы на один и тот же URL с помощью библиотеки golang net / http.
В настоящее время работает:
Пока нет работает:
Оба URL возвращают одинаковый контент для всех запрошенных ресурсов , но это не имеет значения для файлов cookie сеанса.
Мой минимальный код:
func listenAndHandle() {
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
http.HandleFunc("/", handle.PageIndex)
go func() {
if err := http.ListenAndServe(":80", http.HandlerFunc(redirectTLS)); err != nil {
handle.Lv.Println("ListenAndServe error:", err)
}
}()
handle.Lv.Println(http.ListenAndServeTLS(database.Config.PORT, database.Config.TLScertfile,
database.Config.TLSkeyfile, nil))
}
func redirectTLS(w http.ResponseWriter, r *http.Request) {
if strings.Contains(r.Host, "www.") {
u := *r.URL
u.Host = strings.Replace(r.Host, "www.", "", 1)
u.Scheme = "https"
http.Redirect(w, r, u.String(), http.StatusFound)
return
}
http.Redirect(w, r, database.Config.TLSurl+r.RequestURI, http.StatusMovedPermanently)
}
Меня не очень интересует добавление другой библиотеки для решения этой проблемы, все остальное работает просто хорошо с golang по умолчанию net / http.