开发 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中文网其他相关文章!