带有静态文件的 Go Gorilla mux 子路由器
Go Gorilla mux subrouter with static files
问题
您好,我想使用路由器和子路由器创建一个显示 2 个页面和 2 个静态目录的 Web 服务器。
我不明白为什么显示路由器服务的静态目录,而子路由器处理的静态服务器不工作。
代码、文件系统方案和网页:显示和想要的如下所示。
文件系统方案
ProjectFolder/
testFile
test.go
代码
package main
import (
"github.com/gorilla/mux"
"net/http"
)
func index(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Index"));
}
func main () {
r := mux.NewRouter()
sub := r.PathPrefix("/sub").Subrouter()
r.HandleFunc("/", index)
r.Handle("/static", http.StripPrefix("/static", http.FileServer(http.Dir("./"))))
sub.Handle("/static", http.StripPrefix("/static", http.FileServer(http.Dir("./"))))
sub.HandleFunc("/", index)
http.ListenAndServe(":8080", r)
}
网络服务器中我想要的页面
http://localhost:8080/ ----> (index)
http://localhost:8080/static ---> (presentation of the file systemfolder)
http://localhost:8080/sub/ ---> (index)
http://localhost:8080/sub/static ---> (presentation of the file system folder)
我在网络服务器中的页面
http://localhost:8080/ ----> (index)
http://localhost:8080/static ---> (presentation of the file system folder)
http://localhost:8080/sub/ ---> (index)
http://localhost:8080/sub/static ---> (404 page not found)
尝试将子文件服务器行更改为(在 StripPrefix 调用中包含 sub
路径)
sub.Handle("/static", http.StripPrefix("/sub/static", http.FileServer(http.Dir("./"))))
下面的代码适合我
package main
import (
"net/http"
"github.com/gorilla/mux"
)
func index(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Index"))
}
func main() {
r := mux.NewRouter()
r.Handle("/static", http.StripPrefix("/static", http.FileServer(http.Dir("./"))))
r.HandleFunc("/", index)
sub := r.PathPrefix("/sub").Subrouter()
sub.Handle("/static", http.StripPrefix("/sub/static", http.FileServer(http.Dir("./"))))
sub.HandleFunc("/", index)
http.ListenAndServe(":8080", r)
}
问题
您好,我想使用路由器和子路由器创建一个显示 2 个页面和 2 个静态目录的 Web 服务器。
我不明白为什么显示路由器服务的静态目录,而子路由器处理的静态服务器不工作。
代码、文件系统方案和网页:显示和想要的如下所示。
文件系统方案
ProjectFolder/
testFile
test.go
代码
package main
import (
"github.com/gorilla/mux"
"net/http"
)
func index(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Index"));
}
func main () {
r := mux.NewRouter()
sub := r.PathPrefix("/sub").Subrouter()
r.HandleFunc("/", index)
r.Handle("/static", http.StripPrefix("/static", http.FileServer(http.Dir("./"))))
sub.Handle("/static", http.StripPrefix("/static", http.FileServer(http.Dir("./"))))
sub.HandleFunc("/", index)
http.ListenAndServe(":8080", r)
}
网络服务器中我想要的页面
http://localhost:8080/ ----> (index)
http://localhost:8080/static ---> (presentation of the file systemfolder)
http://localhost:8080/sub/ ---> (index)
http://localhost:8080/sub/static ---> (presentation of the file system folder)
我在网络服务器中的页面
http://localhost:8080/ ----> (index)
http://localhost:8080/static ---> (presentation of the file system folder)
http://localhost:8080/sub/ ---> (index)
http://localhost:8080/sub/static ---> (404 page not found)
尝试将子文件服务器行更改为(在 StripPrefix 调用中包含 sub
路径)
sub.Handle("/static", http.StripPrefix("/sub/static", http.FileServer(http.Dir("./"))))
下面的代码适合我
package main
import (
"net/http"
"github.com/gorilla/mux"
)
func index(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Index"))
}
func main() {
r := mux.NewRouter()
r.Handle("/static", http.StripPrefix("/static", http.FileServer(http.Dir("./"))))
r.HandleFunc("/", index)
sub := r.PathPrefix("/sub").Subrouter()
sub.Handle("/static", http.StripPrefix("/sub/static", http.FileServer(http.Dir("./"))))
sub.HandleFunc("/", index)
http.ListenAndServe(":8080", r)
}