Heim >Backend-Entwicklung >Golang >Wie vermeide ich Konflikte bei der Bereitstellung statischer Inhalte und einer Homepage aus dem Stammverzeichnis in Go?

Wie vermeide ich Konflikte bei der Bereitstellung statischer Inhalte und einer Homepage aus dem Stammverzeichnis in Go?

Linda Hamilton
Linda HamiltonOriginal
2024-12-20 11:47:09485Durchsuche

How to Avoid Conflicts When Serving Static Content and a Homepage from the Root Directory in Go?

Bereitstellung von Homepage und statischen Inhalten aus dem Stammverzeichnis

In Go können Sie sowohl statische Inhalte als auch eine Homepage aus dem Stammverzeichnis bereitstellen. Es kommt jedoch zu Konflikten, wenn beide Methoden für die Stamm-URL registriert sind.

Statischen Inhalt bereitstellen

Um statischen Inhalt wie Bilder und CSS bereitzustellen, müssen Sie http.Handle verwenden und ein bereitstellen http.Dir. Wenn Sie dies jedoch für die Stamm-URL tun, kommt es zu einem Konflikt mit dem Homepage-Handler.

Homepage bereitstellen

Um eine Homepage bereitzustellen, verwenden Sie http.HandleFunc und stellen Sie eine Handler-Funktion bereit, die die schreibt Homepage-Inhalt.

Vorgeschlagene Lösung: Explizite Dateibereitstellung

Um den Konflikt zu lösen, sollten Sie die Bereitstellung bestimmter Root-Dateien in Betracht ziehen explizit. Sie können beispielsweise sitemap.xml, favicon.ico und robots.txt als einzelne Dateien bereitstellen.

package main

import (
    "fmt"
    "net/http"
)

func HomeHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "HomeHandler")
}

func serveSingle(pattern string, filename string) {
    http.HandleFunc(pattern, func(w http.ResponseWriter, r *http.Request) {
        http.ServeFile(w, r, filename)
    })
}

func main() {
    http.HandleFunc("/", HomeHandler) // homepage

    // Mandatory root-based resources
    serveSingle("/sitemap.xml", "./sitemap.xml")
    serveSingle("/favicon.ico", "./favicon.ico")
    serveSingle("/robots.txt", "./robots.txt")

    // Normal resources
    http.Handle("/static", http.FileServer(http.Dir("./static/")))

    http.ListenAndServe(":8080", nil)
}

Andere Ressourcen verschieben

Alle anderen statischen Ressourcen verschieben (z. B. CSS, JS) in ein Unterverzeichnis wie /static. Anschließend bedienen Sie dieses Unterverzeichnis normal mit http.Handle und http.Dir.

Das obige ist der detaillierte Inhalt vonWie vermeide ich Konflikte bei der Bereitstellung statischer Inhalte und einer Homepage aus dem Stammverzeichnis in Go?. 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