2017-06-03 9 views
2

http.Handle("/static/", http.FileServer(http.Dir("")))の何が問題になっていますか?Goで静的ファイルを処理するときにhttp.StripPrefixが必要ですか?

最短例私はこのようなルックスを見つけることができます:

fs := http.FileServer(http.Dir("static")) 
http.Handle("/static/", http.StripPrefix("/static/", fs)) 

http.StripPrefix必要ですか?

+1

[なぜ静的ファイルにアクセスするにはhttp.StripPrefixを使用する必要がありますか?](https://stackoverflow.com/questions/27945310/why-do-i-need-to-use-http -stripprefix-to-access-my-static-files) – putu

答えて

2

いいえ必須ではありませんが、使用しない場合は、ファイルを見つけるためのパスに接頭辞が含まれます。これは、例と明確なので、フォルダ構造を想像しました:

main.go 
static/ 
    styles.css 

そして、あなたがファイルを提供:

http.Handle("/static/", http.FileServer(http.Dir(""))) 

が続いyoursite.com/static/styles.cssでファイルを要求するユーザがStyles.cssをファイルになるだろう静的なdirで。しかし、これがうまくいくためにはあなたの道は完璧に並ばなければなりません。

ほとんどの人が代わりに次の操作を行うことを好む:彼らは静的なディレクトリ(またはその逆の名前を変更することなく、/assets/のようなものにするために彼らのURLパスを変更する可能性があるため

fs := http.FileServer(http.Dir("static")) 
http.Handle("/static/", http.StripPrefix("/static/", fs)) 

を - wをローカルディレクトリ構造を変更します/ outはURLパスを更新します)。

TL;パスプレフィックスは必須ではありませんが、完全に一致するURLパスとローカルディレクトリ構造の要件を破るのに便利です。

関連する問題