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

Patricia Arquette
Freigeben: 2024-10-28 03:19:31
Original
772 Leute haben es durchsucht

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>
Nach dem Login kopieren

Ä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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!