如何在 Golang 中重寫 404
在Golang中,重寫404錯誤頁面是一個常見的需求,可以幫助我們提供更友善和個人化的錯誤提示。在本文中,php小編西瓜將向大家介紹如何在Golang中實現404頁面的重寫。我們將使用Gin框架來建立Web應用,並透過自訂中間件來處理404錯誤。透過本文的指導,您將學會如何簡單快速地重寫404頁面,提升使用者體驗。讓我們開始吧!
問題內容
我仍在學習如何使用 Go 進行 Web 開發,但是當我嘗試建立一個簡單的網站時,我面臨以下困難:
package main import ( "fmt" "html/template" "net/http" ) func main() { fs := http.FileServer(http.Dir("")) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { tmpl, _ := template.ParseFiles("index.html") tmpl.Execute(w, nil) }) /** * This route will return a 404 error */ http.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Test page") }) /** * If I replace fs to nil, /test route will be work, but non-existent routes * will be return index.html template (home router) instead 404 error. Why? */ http.ListenAndServe(":80", fs) }
http.FileServer
和 http.HandleFunc
之間有衝突。
例如,當我寫: http.ListenAndServe(":80", nil)
時,所有路由(http.HandleFunc
) 都會工作,但如果我嘗試執行以下操作:
http.ListenAndServe(":80", http.FileServer(http.Dir("")))
#沒有路由有效(除了 http.HandleFunc("/"))
。為什麼?
如何覆寫 404 錯誤頁面?我希望Go 有一個像http.HandleError
這樣的方法,它接受http.ResponseWriter
和http.Request
的接口,但我找不到類似的東西。
解決方法
檢查 http.ListenAndServe
的文件:
如果 handler
為 nil,則會使用預設處理程序 http.HandleFunc
:
因此,在您的程式碼中,您使用DefaultServeMux
註冊了兩條路由;呼叫http.ListenAndServe(":80", nil)
使用預設處理程序(您新增了路由),因此/test
可以工作(更多資訊如下!)。但是,當您執行http.ListenAndServe(":80", fs)
時,您將傳入一個特定的處理程序(fs
),因此所有請求都會傳送到該處理程序(它將嘗試從本機檔案系統提供檔案)。
從這一點開始,我將假設 http.ListenAndServe(":80", nil)
正在被使用(因為添加處理程序然後不使用它們並沒有真正意義)。
上面提到的ServeMux
所以讓我們檢查一下該文件:
因此,Mux 接收請求並計算出應該呼叫哪個處理程序來處理該請求(請注意,只會呼叫一個處理程序)。匹配基於模式的長度(因此,在您的範例中 /test
比 /
長,因此優先)。這意味著對/test
的請求將觸發fmt.Fprint(w, "測試頁")
,其他所有內容將呼叫載入index.html
的處理程序。需要注意的是,您尚未添加引用fs
的處理程序,因此該處理程序未使用(且程式碼將無法編譯- 使用 http.FileServer 處理自訂 404 頁面
以上是如何在 Golang 中重寫 404的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

是的,H5頁面製作是前端開發的重要實現方式,涉及HTML、CSS和JavaScript等核心技術。開發者通過巧妙結合這些技術,例如使用<canvas>標籤繪製圖形或使用JavaScript控制交互行為,構建出動態且功能強大的H5頁面。

CSS自定義resize符號的方法與背景色統一在日常開發中,我們經常會遇到需要自定義用戶界面細節的情況,比如調...

關於inline-block元素錯位顯示的原因及解決方案在編寫網頁佈局時,我們常常會遇到一些看似奇怪的顯示問題。比...

實時比特幣美元價格 影響比特幣價格的因素 預測比特幣未來價格的指標 以下是 2018-2024 年比特幣價格的一些關鍵信息:

如何實現分段器的45度曲線效果?在實現分段器的過程中,如何讓點擊左側按鈕時右側邊框變成45度曲線,而點�...

如何使用JavaScript或CSS控制瀏覽器打印設置中的頁首和頁尾在瀏覽器的打印設置中,有一個選項可以控制是否顯�...
