Apabila melaksanakan penghalaan URL menggunakan pakej mux Gorilla Toolkit, cabaran biasa timbul apabila menyajikan kandungan statik daripada subdirektori. Dalam artikel ini, kami akan meneroka penyelesaian kepada isu ini dengan menggunakan kaedah PathPrefix dan cara ia boleh menyelesaikan ralat 404 yang dihadapi semasa mengakses fail statik.
Pertimbangkan senario berikut : Anda mempunyai pelayan web Go dengan fail dan struktur direktori berikut:
... main.go static\ | index.html | js\ | <js files> | css\ | <css files>
Dalam anda fail main.go, anda telah menentukan penghala mux seperti berikut:
func main() { r := mux.NewRouter() r.Handle("/", http.FileServer(http.Dir("./static/"))) r.HandleFunc("/search/{searchTerm}", Search) r.HandleFunc("/load/{dataId}", Load) http.ListenAndServe(":8100", nil) }
Apabila mengakses http://localhost:8100 dalam penyemak imbas anda, index.html berjaya dipaparkan. Walau bagaimanapun, percubaan untuk mengakses fail CSS dan JavaScript dalam subdirektori menghasilkan 404 ralat.
Untuk menyelesaikan isu ini, kami menggunakan kaedah PathPrefix yang disediakan oleh pakej mux. Dengan menggunakan kaedah ini, kami boleh menentukan awalan laluan yang biasa kepada semua fail statik, dan kemudian menetapkan pengendali untuk awalan laluan itu.
func main() { r := mux.NewRouter() r.HandleFunc("/search/{searchTerm}", Search) r.HandleFunc("/load/{dataId}", Load) r.PathPrefix("/").Handler(http.FileServer(http.Dir("./static/"))) http.ListenAndServe(":8100", r) }
Dengan menggunakan PathPrefix("/").Handler, kami pada asasnya mengatakan bahawa untuk mana-mana laluan yang bermula dengan "/", kami harus menunda kepada pengendali FileServer. Ini memastikan semua fail statik dalam direktori statik/ disampaikan dengan betul, termasuk fail dalam subdirektori seperti css/ dan js/.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 404 Semasa Menyajikan Kandungan Statik dengan PathPrefix Gorilla Mux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!