ホームページ >バックエンド開発 >Golang >Go HTTP サーバーのファイル名から .html 拡張子を削除するにはどうすればよいですか?

Go HTTP サーバーのファイル名から .html 拡張子を削除するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-29 13:59:02402ブラウズ

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 は、.html 拡張子の有無にかかわらずファイルを検索する Open メソッドをオーバーライドします。ファイルのリクエストが行われると、サーバーはまず .html 拡張子を持つファイルを開こうとします。見つからない場合は、拡張子なしでファイルを開こうとします。

カスタム ファイル システムを実装し、それをハンドラーとして登録することで、アクセスを提供しながら、ファイル名から .html 拡張子を効果的に削除できます。

以上がGo HTTP サーバーのファイル名から .html 拡張子を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。