静的なHTMLファイルを提供しようとしていますが、このファイルには他のリソースを指すスクリプトタグがあります。私は1つのディレクトリからhtmlファイルを提供したいが、アセットの要求を別のディレクトリにリダイレクトする。これは私が今それを設定してい方法である:ここでは静的ファイルのリダイレクト要求
// server.go
import (
"fmt"
"html/template"
"log"
"net/http"
"path"
"time"
)
func handle(w http.ResponseWriter, r *http.Request) {
lp := path.Join("./", "index.html")
fmt.Println(lp)
tmpl, err := template.ParseFiles(lp)
if err != nil {
log.Fatal(err)
}
tmpl.ExecuteTemplate(w, "index", nil)
}
func main() {
fs := http.FileServer(http.Dir("../../app_assets/"))
http.Handle("/assets", fs)
http.HandleFunc("/static/", handle)
fmt.Println("Go Server listening on port 8000")
http.ListenAndServe(":8000", nil)
}
は私のテンプレートです:
<!-- index.html -->
{{define "index"}}
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="assets/css/libs.css" type="text/css" />
</head>
<body>
<script type="text/javascript" src="assets/js/libs.js"></script>
<h1> Hello </h1>
</body>
</html>
{{end}}
私はlocalhost:8000/static/
からインデックスファイルを提供することができるよ、しかし、資産要求はするつもりはありません資産フォルダは2レベル上になります(../../
)。私は間違って何をしていますか?
注:
libs.jsがロードされたときに、私は、コンソールでこのエラーを取得しています:これはlibs.js
ファイルに対する要求はにリダイレクトされていることを信じるように私をリード
Uncaught SyntaxError: Unexpected token <
HTMLマークアップ。
どうしてですか?
注2:私はlibs.js
のための要求の結果を参照すると
が、私はHTMLマークアップを参照してください。下のアドバイスとしてStripPrefix
を使用した後でさえ。私は間違って何をしていますか?
絶対パスを使用し、問題を回避します。 – elithrar
@elithrarの例ですか? – dopatraman