2017-07-25 4 views
0

Golangのhtml/templateモジュールを使用してテンプレートをレンダリングしようとしています。しかし、レンダリング中のページと同じフォルダのCSSファイルと画像だけが実行され、別のフォルダにあるものは無視されます。Golangを使用してテンプレートをレンダリングすると、別のフォルダのCSSと画像が読み取られない

<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <meta name="description" content=""> 
    <meta name="author" content=""> 
    <title>Start Connect</title> 
    <link href="../css/bootstrap.min.css" rel="stylesheet"> 
    <link href="one-page.css" rel="stylesheet"> 
</head> 

一page.cssが実行されるではなく、ブートストラップ:例えばこのページの

func render(w http.ResponseWriter, filename string, data interface{}) { 
    tmpl, err := template.ParseFiles(filename) 
    if err != nil { 
     http.Error(w, err.Error(), http.StatusInternalServerError) 
    } 
    if err := tmpl.Execute(w, data); err != nil { 
     http.Error(w, err.Error(), http.StatusInternalServerError) 
    } 
    } 

:ここに私のコードです。

+1

このページはからロードされていること** ** URLへの相対パス正しいですか?ブラウザは相対パスを処理しており、これを使用して新しいURLを作成し、サーバーにリソースを要求していることを覚えておいてください。 – Adrian

答えて

1

ウェブ上で../cssを使用することは避けてください。エラーの原因となる可能性があります。ゴーサーバはファイルを解決できない可能性があります(../css URIのハンドラがないため)。 ../cssの部分を/cssに変更し、ファイルを提供して/css個のURIを処理するようサーバーに伝えてください(詳細を提供していないため、コードを表示できません)。あなたがデフォルトにnet/httpマルチプレクサを使用していると仮定すると

、あなたのコードは次のようになります。

mux := http.NewServeMux() 
mux.Handle("/css/", http.StripPrefix("/css/", http.FileServer(http.Dir("css")))) 
http.ListenAndServe(":8080", mux) 
関連する問題