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 サイトの他の関連記事を参照してください。