Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengelakkan Konflik Apabila Menyajikan Kandungan Statik dan Halaman Utama daripada Direktori Root dalam Go?

Bagaimana untuk Mengelakkan Konflik Apabila Menyajikan Kandungan Statik dan Halaman Utama daripada Direktori Root dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-20 11:47:09485semak imbas

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

Menyajikan Halaman Utama dan Kandungan Statik daripada Root

Dalam Go, anda boleh menyampaikan kandungan statik dan halaman utama daripada direktori akar. Walau bagaimanapun, konflik timbul apabila kedua-dua kaedah didaftarkan untuk URL akar.

Layankan Kandungan Statik

Untuk menyampaikan kandungan statik, seperti imej dan CSS, anda perlu menggunakan http.Handle dan menyediakan http.Dir. Walau bagaimanapun, jika anda melakukan ini untuk URL akar, ia akan bercanggah dengan pengendali halaman utama.

Layankan Halaman Utama

Untuk menyediakan halaman utama, gunakan http.HandleFunc dan sediakan fungsi pengendali yang menulis kandungan halaman utama.

Penyelesaian Cadangan: Penyajian Fail Eksplisit

Untuk menyelesaikan konflik, pertimbangkan untuk menyediakan perkhidmatan khusus fail akar secara eksplisit. Contohnya, anda boleh menyediakan sitemap.xml, favicon.ico dan robots.txt sebagai fail individu.

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

Alih Sumber Lain

Alihkan semua sumber statik lain (cth., CSS, JS) ke subdirektori seperti /static. Kemudian, layan subdirektori ini seperti biasa menggunakan http.Handle dan http.Dir.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Konflik Apabila Menyajikan Kandungan Statik dan Halaman Utama daripada Direktori Root dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn