ホームページ > バックエンド開発 > Golang > Gorilla Mux の PathPrefix を使用して静的コンテンツを提供するときに発生する 404 エラーを修正する方法

Gorilla Mux の PathPrefix を使用して静的コンテンツを提供するときに発生する 404 エラーを修正する方法

Susan Sarandon
リリース: 2024-12-08 01:18:13
オリジナル
350 人が閲覧しました

How to Fix 404 Errors When Serving Static Content with Gorilla Mux's PathPrefix?

Gorilla Mux で静的コンテンツを提供する場合の 404 のアドレス指定

Gorilla Toolkit の Mux パッケージを使用して URL ルーティングを実装する場合、サブディレクトリから静的コンテンツを提供するときに共通の課題が発生します。この記事では、PathPrefix メソッドを利用してこの問題の解決策を検討し、静的ファイルにアクセスするときに発生する 404 エラーを解決する方法について説明します。

問題の説明

次のシナリオを考えてみましょう。 : 次のファイルとディレクトリ構造を持つ Go Web サーバーがあります:

...
main.go
static\
  | index.html
  | js\
     | <js files>
  | css\
     | <css files>
ログイン後にコピー

main.go ファイルで、次のように定義しました。

func main() {
    r := mux.NewRouter()
    r.Handle("/", http.FileServer(http.Dir("./static/")))
    r.HandleFunc("/search/{searchTerm}", Search)
    r.HandleFunc("/load/{dataId}", Load)
    http.ListenAndServe(":8100", nil)
}
ログイン後にコピー

ブラウザで http://localhost:8100 にアクセスすると、index.html が正常にレンダリングされます。ただし、サブディレクトリ内の CSS および JavaScript ファイルにアクセスしようとすると、404 エラーが発生します。

PathPrefix を使用した解決策

この問題を解決するには、mux パッケージによって提供される PathPrefix メソッドを採用します。このメソッドを利用すると、すべての静的ファイルに共通のパス接頭辞を指定し、そのパス接頭辞にハンドラーを割り当てることができます。

func main() {
    r := mux.NewRouter()
    r.HandleFunc("/search/{searchTerm}", Search)
    r.HandleFunc("/load/{dataId}", Load)
    r.PathPrefix("/").Handler(http.FileServer(http.Dir("./static/")))
    http.ListenAndServe(":8100", r)
}
ログイン後にコピー

PathPrefix("/").Handler を使用すると、基本的に、「/」で始まるパスについては、FileServer ハンドラーに従わなければならないと言っているのです。これにより、css/ や js/ などのサブディレクトリ内の静的ファイルも含め、static/ ディレクトリ内のすべての静的ファイルが正しく提供されるようになります。

以上がGorilla Mux の PathPrefix を使用して静的コンテンツを提供するときに発生する 404 エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート