gpt4 book ai didi

http - 带有静态文件的 Go Gorilla mux 子路由器

转载 作者:IT王子 更新时间:2023-10-29 01:53:58 26 4
gpt4 key购买 nike

问题

你好,我想创建一个 Web 服务器,它使用一个路由器和一个子路由器来呈现 2 个页面和 2 个静态目录。

我无法理解为什么在子路由器处理的静态服务器不工作时显示路由器提供的静态目录。

代码、文件系统方案和网页:显示和想要的如下所示。

文件系统方案

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)
}

关于http - 带有静态文件的 Go Gorilla mux 子路由器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51010538/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com