新聞中心
靜態(tài)文件服務(wù)配置
默認(rèn)情況下,?gf Server?關(guān)閉了靜態(tài)文件服務(wù)的功能,如果開(kāi)發(fā)者配置了靜態(tài)文件目錄,那么靜態(tài)文件服務(wù)將會(huì)自動(dòng)開(kāi)啟。

成都創(chuàng)新互聯(lián)是一家專(zhuān)注于網(wǎng)站制作、成都網(wǎng)站制作與策劃設(shè)計(jì),向陽(yáng)網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:向陽(yáng)等地區(qū)。向陽(yáng)做網(wǎng)站價(jià)格咨詢(xún):18982081108
靜態(tài)文件服務(wù)涉及到的常用配置方法如下:
// 設(shè)置http server參數(shù) - ServerRoot
func (s *Server) SetServerRoot(root string)
// 添加靜態(tài)文件搜索目錄,必須給定目錄的絕對(duì)路徑
func (s *Server) AddSearchPath(path string)
// 設(shè)置http server參數(shù) - IndexFiles,默認(rèn)展示文件,如:index.html, index.htm
func (s *Server) SetIndexFiles(index []string)
// 是否允許展示訪問(wèn)目錄的文件列表
func (s *Server) SetIndexFolder(enabled bool)
// 添加URI與靜態(tài)目錄的映射
func (s *Server) AddStaticPath(prefix string, path string)
// 靜態(tài)文件服務(wù)總開(kāi)關(guān):是否開(kāi)啟/關(guān)閉靜態(tài)文件服務(wù)
func (s *Server) SetFileServerEnabled(enabled bool)
// 設(shè)置URI重寫(xiě)規(guī)則
func (s *Server) SetRewrite(uri string, rewrite string)
// 設(shè)置URI重寫(xiě)規(guī)則(批量)
func (s *Server) SetRewriteMap(rewrites map[string]string)
簡(jiǎn)要介紹:
- ?
IndexFiles?為當(dāng)訪問(wèn)目錄時(shí)默認(rèn)檢索的文件名稱(chēng)列表(按照?slice?先后順序進(jìn)行檢索),當(dāng)檢索的文件存在時(shí)則返回文件內(nèi)容,否則展示目錄列表(?SetIndexFolder?為?true?時(shí)),默認(rèn)的?IndexFiles?為:?index.html?, ?index.htm?; - ?
SetIndexFolder?為設(shè)置是否在用戶(hù)訪問(wèn)文件目錄,且沒(méi)有在目錄下檢索到?IndexFiles?時(shí),則展示目錄下的文件列表,默認(rèn)為關(guān)閉; - ?
SetServerRoot?為設(shè)置默認(rèn)提供服務(wù)的靜態(tài)文件目錄,該目錄會(huì)被自動(dòng)添加到?SearchPath?中的第一個(gè)搜索路徑; - ?
AddSearchPath?為添加靜態(tài)文件檢索目錄,可以有多個(gè),按照文件目錄添加的先后順序執(zhí)行優(yōu)先級(jí)檢索; - ?
AddStaticPath?為添加URI與目錄路徑的映射關(guān)系,可以自定義靜態(tài)文件目錄的訪問(wèn)URI規(guī)則; - ?
SetRewrite?/?SetRewriteMap?為重寫(xiě)規(guī)則設(shè)置(類(lèi)似于?nginx?的?rewrite?),嚴(yán)格上來(lái)講不僅僅是靜態(tài)文件服務(wù),當(dāng)然也支持動(dòng)態(tài)的路由注冊(cè)的?rewrite?;
設(shè)置靜態(tài)文件服務(wù)的目錄路徑時(shí),可以使用絕對(duì)路徑,也可以使用相對(duì)路徑,例如設(shè)置當(dāng)前運(yùn)行目錄提供靜態(tài)文件服務(wù)可以使用?SetServerRoot(".")?。
開(kāi)發(fā)者可以設(shè)置多個(gè)文件目錄來(lái)提供靜態(tài)文件服務(wù),并且可以設(shè)置目錄及?URI?的優(yōu)先級(jí),但是一旦通過(guò)?SetFileServerEnabled?關(guān)閉了靜態(tài)服務(wù),所有靜態(tài)文件/目錄的訪問(wèn)都將失效。
示例1, 基本使用
package main
import "github.com/GOgf/gf/v2/frame/g"
// 靜態(tài)文件服務(wù)器基本使用
func main() {
s := g.Server()
s.SetIndexFolder(true)
s.SetServerRoot("/Users/john/Temp")
s.AddSearchPath("/Users/john/Documents")
s.SetPort(8199)
s.Run()
}
示例2,靜態(tài)目錄映射
package main
import "github.com/gogf/gf/v2/frame/g"
// 靜態(tài)文件服務(wù)器,支持自定義靜態(tài)目錄映射
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()
}
示例3,靜態(tài)目錄映射,優(yōu)先級(jí)控制
靜態(tài)目錄映射的優(yōu)先級(jí)按照綁定的?URI?精準(zhǔn)度進(jìn)行控制,綁定的?URI?越精準(zhǔn)(深度優(yōu)先匹配),那么優(yōu)先級(jí)越高。
package main
import "github.com/gogf/gf/v2/frame/g"
// 靜態(tài)文件服務(wù)器,支持自定義靜態(tài)目錄映射
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.AddStaticPath("/my-doc/test", "/Users/john/Temp")
s.SetPort(8199)
s.Run()
}
其中,訪問(wèn)?/my-doc/test?的優(yōu)先級(jí)會(huì)比?/my-doc?高,因此假如?/Users/john/Documents?目錄下存在?test?目錄(與自定義的?/my-doc/test?沖突),將會(huì)無(wú)法被訪問(wèn)到。
示例4,URI重寫(xiě)
?gf?框架的靜態(tài)文件服務(wù)支持將任意的?URI?重寫(xiě),替換為制定的?URI?,使用?SetRewrite?/?SetRewriteMap?方法。
示例,在?/Users/john/Temp?目錄下只有兩個(gè)文件?test1.html?及?test2.html?。
package main
import "github.com/gogf/gf/v2/frame/g"
func main() {
s := g.Server()
s.SetServerRoot("/Users/john/Temp")
s.SetRewrite("/test.html", "/test1.html")
s.SetRewriteMap(g.MapStrStr{
"/my-test1": "/test1.html",
"/my-test2": "/test2.html",
})
s.SetPort(8199)
s.Run()
}
執(zhí)行后,
- 當(dāng)我們?cè)L問(wèn) ?
/test.html? ,其實(shí)最終被重寫(xiě)到了 ?test1.html?,返回的是該文件內(nèi)容; - 當(dāng)我們?cè)L問(wèn) ?
/my-test1? ,其實(shí)最終被重寫(xiě)到了 ?test1.html?,返回的是該文件內(nèi)容; - 當(dāng)我們?cè)L問(wèn) ?
/my-test2? ,其實(shí)最終被重寫(xiě)到了 ?test2.html?,返回的是該文件內(nèi)容;
新聞標(biāo)題:創(chuàng)新互聯(lián)GoFrame教程:GoFrame高級(jí)特性-靜態(tài)文件服務(wù)
本文路徑:http://fisionsoft.com.cn/article/dhjphhj.html


咨詢(xún)
建站咨詢(xún)
