カスタム ファイル システムを使用して .html 拡張子を削除する
URL に .html 拡張子が表示されないようにするための 1 つの方法は、 http.Dir を使用する http.FileSystem インターフェイス。このソリューションは http.FileServer の堅牢なコードを利用します。
これを実装するには、http.Dir:
<code class="go">type HTMLDir struct { d http.Dir }</code>
を埋め込むカスタム タイプを作成します。このカスタム ファイル システムを使用するように main 関数を変更します。 http.FileServer の代わりに:
<code class="go">func main() { fs := http.FileServer(HTMLDir{http.Dir("public/")}) http.Handle("/", http.StripPrefix("/", fs)) http.ListenAndServe(":8000", nil) }</code>
次に、HTMLDir 型の Open メソッドを定義します。このメソッドは、ファイル システムがファイル要求を処理する方法を決定します。
常に .html 拡張子を使用する:
<code class="go">func (d HTMLDir) Open(name string) (http.File, error) { return d.d.Open(name + ".html") }</code>
.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>
ファイル名へのフォールバック (拡張子なし):
<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>
上記の解決策を実装すると、. Go HTTP サーバーにアクセスするときに URL から html 拡張子を取得します。
以上がGo HTTP サーバーの URL から .html 拡張子を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。