http - 从网址中删除结尾的斜杠-转到静态服务器

标签 http go server go-http go-server

我已经使用http.FileServer设置了一个简单的Go静态文件服务器。如果我具有public > about > index.html之类的目录结构,则服务器会将正确的/about解析为about > index.html,但它会在末尾添加一个斜杠,从而使URL成为/about/
使用http.FileServer时,是否有一种简单的方法可以删除这些尾部斜杠?最终,它会以任何一种方式起作用-如果可能的话,多数情况下只是出于个人喜好而不使用斜杠。

最佳答案

当您注册路由/about/时,会添加一个隐含的/about路由(它将客户端重定向到/about/)。
要变通解决此问题,您可以注册两个显式路由:

  • /about服务您的index.html
  • /about/提供http.FileServer来处理页面
  • 的所有HTML Assets

    像这样:
    // what you had before
    h.Handle("/about/",
        http.StripPrefix(
            "/about/",
            http.FileServer(http.Dir("/tmp/about-files")),
        ),
    )
    
    // prevents implicit redirect to `/about/`
    h.HandleFunc("/about",
        func(w http.ResponseWriter, r *http.Request) {
            http.ServeFile(w, r, "index.html") // serves a single file from this route
        },
    )
    
    https://play.golang.org/p/WLwLPV5WuJm

    关于http - 从网址中删除结尾的斜杠-转到静态服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62642098/

    相关文章:

    http - X-Forwarded-For 响应等效

    security - http和https的区别

    go - 调用在 golang 中作为接口(interface)变量接收的函数

    Cgo 可以调用在另一个目录中声明的 C 函数吗?

    go - 在带有多个父项的 go cobra 中添加子命令

    rest - 使用 REST 和 PUB/SUB 的微服务间通信

    python - 在 Linux 服务器中使用 qsub 时如何导入 argparse?

    javascript - 在 node.js 中设置下载响应的文件名

    javascript - AngularJS XMLHttpRequest 无法加载 X。不存在 'Access-Control-Allow-Origin' header

    php - 使用PHP文件在服务器之间自动存储和发送JSON数据