静态文件服务配置
静态文件服务涉及到的常用配置方法如下:
简要介绍:
IndexFiles
为当访问目录时默认检索的文件名称列表(按照slice先后顺序进行检索),当检索的文件存在时则返回文件内容,否则展示目录列表(SetIndexFolder
为true
时),默认的IndexFiles
为:index.html, index.htm
;SetIndexFolder
为设置是否在用户访问文件目录,且没有在目录下检索到IndexFiles
时,则展示目录下的文件列表,默认为关闭;SetServerRoot
为设置默认提供服务的静态文件目录,该目录会被自动添加到SearchPath
中的第一个搜索路径;AddSearchPath
为添加静态文件检索目录,可以有多个,按照文件目录添加的先后顺序执行优先级检索;AddStaticPath
为添加URI
与目录路径的映射关系,可以自定义静态文件目录的访问URI规则;SetRewrite
/SetRewriteMap
为重写规则设置(类似于nginx
的rewrite
),严格上来讲不仅仅是静态文件服务,当然也支持动态的路由注册的rewrite
;
开发者可以设置多个文件目录来提供静态文件服务,并且可以设置目录及URI的优先级,但是一旦通过SetFileServerEnabled
关闭了静态服务,所有静态文件/目录的访问都将失效。
示例1, 基本使用
package main
// 静态文件服务器基本使用
func main() {
s := g.Server()
s.SetIndexFolder(true)
s.SetServerRoot("/Users/john/Temp")
s.AddSearchPath("/Users/john/Documents")
s.SetPort(8199)
s.Run()
}
示例2,静态目录映射
示例3,静态目录映射,优先级控制
静态目录映射的优先级按照绑定的URI
精准度进行控制,绑定的URI越精准(深度优先匹配),那么优先级越高。
package main
import "github.com/gogf/gf/v2/frame/g"
func main() {
s := g.Server()
s.SetIndexFolder(true)
s.SetServerRoot("/Users/john/Temp")
s.AddSearchPath("/Users/john/Documents")
s.AddStaticPath("/my-doc", "/Users/john/Documents")
s.SetPort(8199)
s.Run()
}
示例4,URI
重写
gf
框架的静态文件服务支持将任意的URI
重写,替换为制定的URI
,使用SetRewrite/SetRewriteMap
方法。
示例,在/Users/john/Temp
目录下只有两个文件test1.html
及test2.html
。
- 当我们访问
/test.html
,其实最终被重写到了test1.html
,返回的是该文件内容; - 当我们访问 ,其实最终被重写到了
test2.html
,返回的是该文件内容;