Go 如何调用静态HTML文件

Go 如何调用静态HTML文件,go,Go,我创建了一个包含index.html文件的静态文件夹,在我的go文件中,我写道: 主程序包 进口( “net/http” ) func main(){ http.Handle(“/”,http.FileServer(http.Dir(“./static”)) http.listendServe(“:8482”,无) } 在探索http://localhost:8482/ 我试图将代码编写为: http.Handle(“/static”,http.FileServer(http.Dir(“/st

我创建了一个包含
index.html
文件的静态文件夹,在我的go文件中,我写道:

主程序包
进口(
“net/http”
)
func main(){
http.Handle(“/”,http.FileServer(http.Dir(“./static”))
http.listendServe(“:8482”,无)
}
在探索
http://localhost:8482/

我试图将代码编写为:

http.Handle(“/static”,http.FileServer(http.Dir(“/static”))
但在探索
http://localhost:8482/static
带有404错误

http.Handle(“/static”,http.FileServer(http.Dir(“/static”))
的简单意思是,“每当有人连接到
../static
,将整个请求重新路由到根目录为/static的文件服务器”

但是,url会按原样传递给文件服务器。换句话说,文件服务器接收来自用户的请求,并认为用户正在根
(“/static”)
目录中查找名为“static”的文件

事实上,如果您只是将一个名为“static”的文件放在“
/static
”目录中,那么转到
../static
将提供该文件

因此,修复需要两件事:

  • 将路径前缀更改为“
    /static/
    ”而不是“
    /static
    ”,这样静态目录中的所有文件都可以重新路由到文件服务器(而不仅仅是“/static”请求)
  • 在将请求传递到文件服务器之前,从请求中去掉“
    /static/
    ”路径前缀
  • 像这样:

    http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./static"))))
    
    http.Handle(“/static”,http.FileServer(http.Dir(“/static”))
    的简单意思是,“每当有人连接到
    ../static
    ,都会将整个请求重新路由到根目录为/static的文件服务器”

    但是,url会按原样传递给文件服务器。换句话说,文件服务器接收来自用户的请求,并认为用户正在根
    (“/static”)
    目录中查找名为“static”的文件

    事实上,如果您只是将一个名为“static”的文件放在“
    /static
    ”目录中,那么转到
    ../static
    将提供该文件

    因此,修复需要两件事:

  • 将路径前缀更改为“
    /static/
    ”而不是“
    /static
    ”,这样静态目录中的所有文件都可以重新路由到文件服务器(而不仅仅是“/static”请求)
  • 在将请求传递到文件服务器之前,从请求中去掉“
    /static/
    ”路径前缀
  • 像这样:

    http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./static"))))
    

    试试看:
    http://localhost:8482/static/
    -
    /
    在end@Vusal同样的事情:(是当前目录中启动应用程序的
    静态
    文件夹吗?请尝试绝对路径。@HasanAYousef我尝试了你的代码,它可以正常工作。目录路径可能不是correct@icza我添加了显示我的完整路径的屏幕截图:
    http://localhost:8482/static/
    -
    /
    在end@Vusal同样的事情:(是当前目录中启动应用程序的
    静态
    文件夹吗?请尝试绝对路径。@HasanAYousef我尝试了你的代码,它可以正常工作。目录路径可能不是correct@icza我添加了显示完整路径的屏幕截图。在golang http文档中有另一个示例:在golang http文档在此: