2 回答

TA貢獻1802條經驗 獲得超5個贊
在您的 html 中,當您指定srccss 和 js的屬性時,您擁有src="assets/js/libs.js". 這使得這些文件相對于當前路徑被請求。所以請求轉到http://localhost:8000/static/assets/js/libs.js.
由于它具有/static前綴,它將由您的/static處理程序處理,因此提供 html 文件。
要使其轉到/assets處理程序,請指定src帶有/前綴的 。
<script type="text/javascript" src="/assets/js/libs.js"></script>
現在服務器將在../../app_assets/assets/js/libs.js.
如果你想要它../../app_assets/js/libs.js,你可以使用StripPrefixassets從服務器中的 url 中取出部分。
fs := http.StripPrefix("/assets/", http.FileServer(http.Dir("../../app_assets/")))
http.Handle("/assets/", fs)

TA貢獻1862條經驗 獲得超6個贊
所以,我知道這是一個有點混亂,但你想改變fs := http.FileServer(http.Dir("../../assets/"))是fs := http.FileServer(http.Dir("../.."))
原因是請求中已經指定了“assets”的路徑,因此您擁有它,它實際上指向 ../../assets/assets/*
希望有幫助!
哦,只是為了防止另一個錯誤, Handle() 函數應該在路徑中寫一個斜杠。我差點忘了抓住那個。
編輯
要根據您的其他需要(使用某種重定向)調整我的答案,您必須使用http.StripPrefix處理程序https://golang.org/pkg/net/http/#StripPrefix
對于您的用例,您將使用以下代碼準備服務器:
fs := http.FileServer(http.Dir("../../app_assets"))
http.Handle("/assets/", http.StripPrefix("/assets/", fs))
這使您可以為文件系統服務進行 url 重寫。
- 2 回答
- 0 關注
- 199 瀏覽
添加回答
舉報