2017-09-22 11 views
1

私はgoプログラミングでは初心者です。私はこのチュートリアル(https://golang.org/doc/articles/wiki/)に従った。私は複数のページとCSS要素を持つサイトの上に構築したかったのです。私はこれは私のmakeHandler機能であるGoはすべてのHTMLページのCSS要素をレンダリングしていません

http.Handle("/css/", http.StripPrefix("/css/", http.FileServer(http.Dir("css")))) 

を使用する主な方法で

。すべての要求を正しいハンドラに向けることになっています。

func makeHandler(fn func(http.ResponseWriter, *http.Request, string)) http.HandlerFunc{ 
    return func(w http.ResponseWriter, r *http.Request){ 
      //extract page title from request 
      //and call the provided handler 'fn' 
      m := validPath.FindStringSubmatch(r.URL.Path) 
      fmt.Println(m) 
      if m == nil{ 
        http.NotFound(w,r) 
        return 
      } 
      fn(w,r,m[2]) 
    } 

}私は「M」を印刷

は、すべての要求はビュー接頭辞た(私は、その後、テンプレートをレンダリングするために呼び出されるのViewHandlerを有します)。

 http.HandleFunc("/view/", makeHandler(viewHandler)) 

私はAboutsiteをページを表示したいのであれば、urlは、その後のViewHandlerに導かれるであろう/ビュー/ Aboutsiteをを持っているでしょう。

問題は、htmlテンプレートにはCSSリンクがあり、リンクには 'view'というプレフィックスが付いていることです。私のHTMLテンプレートにこのコード行がある場合、

<link rel="stylesheet" href="css/bootstrap.min.css"> 

makeHandlerは、 'view'というプレフィックス付きのURLを受け取ります。 /view/css/bootstrap.min.css

CSS要素がレンダリングされるように追加する/変更する必要はありますか?

+0

<リンクのrel = "スタイルシート" のhref = "/ CSS/bootstrap.min.css">そうでなければ、アクティブなURL – Tiega

+0

さえカントーへのhrefにURLを "添付します"あなたは新しく勉強するのが難しいです。まだecho HTTPサーバを見ているかもしれません。あなたが本当にウェブサイトを作りたいのであれば、多くのコーディングを省くことができます。 :) – Tiega

+0

ありがとうございました!それを使うためにエコーを理解しよう –

答えて

0

href属性で絶対パスを使用する必要があります(つまり、/で始まるパスを使用します)。そうでない場合は、現在のページからの相対パスとして処理されます。例えばので

<link rel="stylesheet" href="/css/bootstrap.min.css"> 
関連する問題