Я видел этот пост кого-то здесь, но там нет ответов: Redirecting https://www.domain.com to https://domain.com in GoНельзя ли перенаправить из https: // www .. в https: // .. в Go?
Я пытался увидеть, если я мог бы найти способ, чтобы проверить, если запрос был сделан с помощью WWW URL путем проверки переменных в *http.Request
переменных, но все Я получил относительные пути и пустые строки ""
.
Я попытался fmt.Println()
эти переменные:
func handleFunc(w http.ResponseWriter, r *http.Request) {
fmt.Println(r.URL.string())
fmt.Println(r.Host)
fmt.Println(r.RequestURI)
}
Но ни одна из этих переменных не содержит абсолютный путь с WWW части. Как я могу проверить, был ли запрос выполнен с URL-адреса www? Я хочу понять это, чтобы я мог перенаправить с www на non-www.
Действительно ли это невозможно в Go? Некоторые люди предложили поставить nginx перед Go, но должен ли быть способ без nginx правильно? Нужно ли мне действительно устанавливать и использовать nginx перед Go только для простого перенаправления с www на не-www? Это не похоже на хорошее решение, казалось бы, небольшой проблемы.
Нет ли способа достичь этого?
Конечно, вы можете сделать это в Go, потому что Go это язык программирования общего назначения. Реальный вопрос заключается в том, можно ли это сделать в используемой вами библиотеке HTTP. Итак, какую библиотеку HTTP вы используете? Можете ли вы предоставить ссылку на свою документацию? Вы пробовали посмотреть HTTP-заголовок Host Host в запросе? –
Поддомен 'www' не является частью пути, он будет частью поля хоста. Пожалуйста, покажите пример того, что вы видите, поскольку он должен присутствовать в 'Request.Host' или' Request.URL'. – JimB