Menyajikan Halaman Utama dan Kandungan Statik daripada Direktori Root
Apabila membangunkan pelayan web di Golang, anda mungkin menghadapi cabaran dalam menyediakan kandungan statik keluar daripada direktori akar sementara juga mempunyai pengendali direktori akar untuk melayani halaman utama. Isu ini timbul apabila anda cuba menambah pengendali fail statik seperti:
http.Handle("/", http.FileServer(http.Dir("./")))
Kod ini berkemungkinan akan menyebabkan panik kerana berbilang pendaftaran untuk laluan "/".
Pendekatan Alternatif: Penyajian Fail Eksplisit
Daripada bergantung pada terbina dalam Golang FileServer, pendekatan alternatif adalah untuk menyampaikan secara eksplisit setiap fail yang terletak dalam direktori akar. Kaedah ini sesuai apabila bilangan fail berasaskan akar adalah minimum, seperti fail wajib seperti:
Untuk mencapai ini, anda boleh menggunakan yang berikut kod:
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) }
Dalam kod ini, kami mentakrifkan fungsi serveSingle untuk mengendalikan penyajian fail individu berdasarkan corak laluannya. Kami kemudiannya menyediakan fail berasaskan akar mandatori secara manual dan mengalihkan sebarang sumber statik tambahan ke subdirektori (cth., /statik/) yang disajikan menggunakan Pelayan Fail terbina dalam Golang. Pendekatan ini membolehkan pemisahan yang bersih antara pengendali halaman utama dan penyajian fail statik sambil mengelakkan konflik.
Atas ialah kandungan terperinci Bagaimana untuk Melayan Halaman Utama dan Fail Statik daripada Direktori Root dalam Go tanpa Konflik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!