Heim  >  Artikel  >  Backend-Entwicklung  >  Wie entferne ich die .html-Erweiterung von URLs in Ihrem Go-HTTP-Server?

Wie entferne ich die .html-Erweiterung von URLs in Ihrem Go-HTTP-Server?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-28 03:19:31761Durchsuche

How to Remove the .html Extension from URLs in Your Go HTTP Server?

Entfernen Sie die .html-Erweiterung mithilfe eines benutzerdefinierten Dateisystems

Um die Anzeige der .html-Erweiterung in URLs zu vermeiden, besteht ein Ansatz darin, die zu implementieren http.FileSystem-Schnittstelle mit http.Dir. Diese Lösung nutzt den robusten Code in http.FileServer.

Um dies zu implementieren, erstellen Sie einen benutzerdefinierten Typ, der http.Dir einbettet:

<code class="go">type HTMLDir struct {
    d http.Dir
}</code>

Ändern Sie die Hauptfunktion, um dieses benutzerdefinierte Dateisystem zu verwenden anstelle von http.FileServer:

<code class="go">func main() {
    fs := http.FileServer(HTMLDir{http.Dir("public/")})
    http.Handle("/", http.StripPrefix("/", fs))
    http.ListenAndServe(":8000", nil)
}</code>

Als nächstes definieren Sie die Open-Methode für den HTMLDir-Typ. Diese Methode bestimmt, wie das Dateisystem Dateianfragen verarbeiten soll.

Immer die .html-Erweiterung anhängen:

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

Fallback auf die .html-Erweiterung :

<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>

Fallback auf den Dateinamen (ohne Erweiterung):

<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>

Durch die Implementierung der oben genannten Lösungen können Sie die . HTML-Erweiterung von URLs beim Zugriff auf Ihren Go-HTTP-Server.

Das obige ist der detaillierte Inhalt vonWie entferne ich die .html-Erweiterung von URLs in Ihrem Go-HTTP-Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn