首页 >后端开发 >Golang >如何在 Go HTTP 服务器中去除文件名中的 .html 扩展名?

如何在 Go HTTP 服务器中去除文件名中的 .html 扩展名?

Linda Hamilton
Linda Hamilton原创
2024-10-29 13:59:02441浏览

How to Strip the .html Extension from File Names in a Go HTTP Server?

如何从 HTTP 服务器中的文件中删除 .html 扩展名

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn