我有一个简单的服务器监听:8888
。
package main
import (
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
log.Println("redirecting to foo")
http.Redirect(w, r, "foo", http.StatusFound)
})
http.HandleFunc("/foo", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("fooooo"))
})
if err := http.ListenAndServe(":8888", nil); err != nil {
log.Fatal(err)
}
}
我坐在apache后面代理了对/bar/*
到go服务器的所有请求。
我正在使用ProxyPassMatch
来执行此操作。
ProxyPassMatch ^/bar/?(:?(.*))?$ http://localhost:8888/$2
问题是当我转到/bar/
时,我被重定向到/foo
而不是/bar/foo
有没有办法让这个工作或我需要在/bar
的所有重定向前加上?
答案 0 :(得分:1)
如果您希望Apache在重定向响应中重写位置,则还需要在配置中包含ProxyPassReverse指令。这样的事情可以解决问题:
ProxyPassReverse /bar/ http://localhost:8888/