開發Web 伺服器時,通常需要從檔案名稱中刪除.html 副檔名以提供更乾淨、更用戶友善的URL 體驗。
在 Go HTTP 伺服器中,這可以透過實作 http.FileSystem 介面並將其註冊為自訂處理程序來實現。以下程式碼示範如何執行此操作:
<code class="go">package main import ( "net/http" "os" ) type HTMLDir struct { d http.Dir } func main() { fs := http.FileServer(HTMLDir{http.Dir("public/")}) http.Handle("/", http.StripPrefix("/", fs)) http.ListenAndServe(":8000", nil) } func (d HTMLDir) Open(name string) (http.File, error) { f, err := d.d.Open(name + ".html") if os.IsNotExist(err) { // Not found, try with .html if f, err := d.d.Open(name); err == nil { return f, nil } } return f, err }</code>
此自訂檔案系統 HTMLDir 會重寫 Open 方法來搜尋有或沒有 .html 副檔名的檔案。當發出檔案請求時,伺服器將首先嘗試開啟擴展名為 .html 的檔案。如果找不到,它將嘗試打開不帶擴展名的檔案。
透過實作自訂檔案系統並將其註冊為處理程序,您可以有效地從檔案名稱中刪除 .html 副檔名,同時仍提供存取權限到想要的內容。
以上是如何在 Go HTTP 伺服器中移除檔案名稱中的 .html 副檔名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!