Golang, GAE, перенаправить пользователя? - PullRequest
6 голосов
/ 29 марта 2012

Как я могу перенаправить запрос страницы в Go, работающем на GAE, чтобы адрес пользователя отображался правильно, не прибегая к отображению страницы перенаправления?Например, если пользователь наберет:

www.hello.com/1

Я бы хотел, чтобы мое приложение Go перенаправляло пользователя на:

www.hello.com/one

Без обращения к:

fmt.Fprintf(w, "<HEAD><meta HTTP-EQUIV=\"REFRESH\" content=\"0; url=/one\"></HEAD>")

Ответы [ 2 ]

22 голосов
/ 30 марта 2012

Для разовых:

func oneHandler(w http.ResponseWriter, r *http.Request) {
  http.Redirect(w, r, "/one", http.StatusMovedPermanently)
}

Если это происходит несколько раз, вместо этого вы можете создать обработчик перенаправления:

func redirectHandler(path string) func(http.ResponseWriter, *http.Request) { 
  return func (w http.ResponseWriter, r *http.Request) {
    http.Redirect(w, r, path, http.StatusMovedPermanently)
  }
}

и используйте его так:

func init() {
  http.HandleFunc("/one", oneHandler)
  http.HandleFunc("/1", redirectHandler("/one"))
  http.HandleFunc("/two", twoHandler)
  http.HandleFunc("/2", redirectHandler("/two"))
  //etc.
}
5 голосов
/ 30 марта 2012
func handler(rw http.ResponseWriter, ...) {
    rw.SetHeader("Status", "302")
    rw.SetHeader("Location", "/one")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...