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.
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.
Untuk menyediakan halaman utama, gunakan http.HandleFunc dan sediakan fungsi pengendali yang menulis kandungan halaman utama.
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) }
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!