首页 >后端开发 >Golang >如何在 Go HTTP 服务器中隐藏 URL 中的 HTML 文件扩展名?

如何在 Go HTTP 服务器中隐藏 URL 中的 HTML 文件扩展名?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-27 16:26:02632浏览

How to Hide HTML File Extensions from URLs in a Go HTTP Server?

如何在简单的 HTTP 服务器中隐藏文件扩展名

许多 Web 服务器在 URL 中显示文件扩展名,这可能不美观或者用户体验的原因。本指南演示了如何在 Go HTTP 服务器中隐藏 URL 的 .html 扩展名。

解决方案

使用 http.Dir 实现 http.FileSystem 具有多种好处,包括利用 http.FileServer 中强大的代码。可以创建自定义 HTMLDir 结构来实现此功能。

实现

Open 的实现取决于所需的行为。下面介绍了三种场景:

选项 1:始终附加 .html

<code class="go">func (d HTMLDir) Open(name string) (http.File, error) {
    return d.d.Open(name + ".html")
}</code>

选项 2:回退到 .html

<code class="go">func (d HTMLDir) Open(name string) (http.File, error) {
    f, err := d.d.Open(name)
    if os.IsNotExist(err) {
        if f, err := d.d.Open(name + ".html"); err == nil {
            return f, nil
        }
    }
    return f, err
}</code>

选项 3:从 .html 开始并后备

<code class="go">func (d HTMLDir) Open(name string) (http.File, error) {
    f, err := d.d.Open(name + ".html")
    if os.IsNotExist(err) {
        if f, err := d.d.Open(name); err == nil {
            return f, nil
        }
    }
    return f, err
}</code>

通过将 HTMLDir 与 http.StripPrefix 结合使用,可以在从以下位置提供文件时有效隐藏 .html 扩展名指定的目录。该技术提供了更加无缝且美观的用户体验,同时仍然允许访问预期内容。

以上是如何在 Go HTTP 服务器中隐藏 URL 中的 HTML 文件扩展名?的详细内容。更多信息请关注PHP中文网其他相关文章!

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