登录
首页 >  Golang >  Go问答

当请求到达根目录时,从不同的目录提供文件

来源:stackoverflow

时间:2024-04-11 23:48:33 421浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《当请求到达根目录时,从不同的目录提供文件》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

当客户端请求到达根目录时,我在从子目录提供某些文件时遇到一些问题。

我正在使用 gorilla/mux 来提供文件。下面是我的代码:

package main

import (
    "log"
    "net/http"
    "time"

    "github.com/gorilla/mux"
    "github.com/zhughes3/zacharyhughes.com/configparser"
)

var config configparser.Configuration

func main() {
    config := configparser.GetConfiguration()
    r := mux.NewRouter()
    initFileServer(r)

    server := &http.Server{
        Handler:      r,
        Addr:         ":" + config.Server.Port,
        WriteTimeout: 15 * time.Second,
        ReadTimeout:  15 * time.Second,
    }

    log.Fatal(server.ListenAndServe())
}

func initFileServer(r *mux.Router) {
    fs := http.FileServer(http.Dir("public/"))
    r.PathPrefix("/public/").Handler(http.StripPrefix("/public/", fs))
}

创建文件系统的代码在上面的initfileserver函数中。

目前,当用户访问 localhost:3000/public/ 时,它会按预期提供静态文件。但是,我希望当用户访问 localhost:3000/ 时提供文件。

我尝试将 parseprefix 函数调用更改为 r.pathprefix("/").handler(http.stripprefix("/public/", fs)) 但它不起作用。任何建议将不胜感激...我对 go 还很陌生。


解决方案


您的文件服务器已在 /public 下提供文件,因此您无需从 http 路径中删除前缀。这应该有效:

r.PathPrefix("/").Handler(http.StripPrefix("/",fs))

今天关于《当请求到达根目录时,从不同的目录提供文件》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>