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

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


咨詢
建站咨詢
