Golang では、404 エラー ページの書き換えは一般的な要件であり、これは、よりフレンドリーでパーソナライズされたエラー プロンプトを提供するのに役立ちます。この記事では、PHPエディターのXiguaがGolangで404ページを書き換える方法を紹介します。 Gin フレームワークを使用して Web アプリケーションを構築し、カスタム ミドルウェアを通じて 404 エラーを処理します。この記事のガイダンスを通じて、ユーザー エクスペリエンスを向上させるために 404 ページを簡単かつ迅速に書き換える方法を学びます。はじめましょう!
Web 開発で Go を使用する方法を学習中ですが、簡単な Web サイトを作成しようとすると、次のような問題に直面します。 リーリー
http.FileServer と
http.HandleFunc の間に競合があります。
http.ListenAndServe(":80", nil) と書くと、すべてのルート (
http.HandleFunc) が機能しますが、実行しようとすると次の操作:
http.ListenAndServe(":80", http.FileServer(http.Dir("")))
http.HandleFunc("/") を除く) 。なぜ?
http.ResponseWriter と
http.Request インターフェイスを受け入れる
http.HandleError のようなメソッドがあればよかったのですが、同様のものは見つかりません。
http.ListenAndServe:のドキュメントを確認してください。
handler が nil の場合、デフォルトのハンドラー
http.HandleFunc が使用されます。
したがって、コードでは、
を使用して 2 つのルートを登録しました。http.ListenAndServe(":80", nil)
を呼び出すと、(ルートが追加した) デフォルトのハンドラーが使用されます。したがって、/test
は機能します (詳細は以下を参照)。ただし、http.ListenAndServe(":80", fs)
を実行すると、特定のハンドラー (fs
) が渡されるため、すべてのリクエストがこのハンドラーに送信されます (これにより、ローカル ファイル システムからファイルを提供してみてください)。
この時点から、http.ListenAndServe(":80", nil)
が使用されていると仮定します (ハンドラーを追加して使用しないことは実際には意味がないため) )。
上記の
ServeMux それでは、ドキュメントを確認してみましょう:
したがって、Mux はリクエストを受信し、リクエストを処理するためにどのハンドラーを呼び出す必要があるかを判断します (呼び出されるハンドラーは 1 つだけであることに注意してください)。マッチングはパターンの長さに基づいて行われます (つまり、この例では
が /
よりも長いため、優先されます)。これは、/test
へのリクエストが fmt.Fprint(w, "test page")
をトリガーし、その他すべてが読み込み中の index.html
ハンドラーを呼び出すことを意味します。 fs
を参照するハンドラーを追加していないため、ハンドラーは使用されないことに注意してください (コードはコンパイルされません -
Golang Mux Router と http.FileServer を使用して、予想されるルート ファイルとカスタム 404
以上がGolangで404を書き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。