如何在简单的 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中文网其他相关文章!