(この質問は古いものですが、Google の検索結果の上位に表示され、受け入れられた回答は最善の解決策ではありません。)
Express.jsで静的コンテンツを提供するための最適なソリューションは、 express.staticです。URL でファイル拡張子を指定する必要がないようにするには、静的ファイルを検索するときに使用するデフォルトのファイル拡張子のリストを使用して構成できます。
app.use(express.static(pathToBaseFolderOfStaticContent, {
extensions: ['html', 'htm'],
... // Other options here
}));
これは、必要なhttp://www.example.com/somePageへの GET リクエストに応答して、 pathToBaseFolderOfStaticContent /somePage.htmlまたはpathToBaseFolderOfStaticContent/somePage.htmを提供します。たとえば、https: //arcade.ly/star-castle にアクセスすると、提供されるファイルはstar-castle.htmlという静的ファイルにすぎません。このための特別なルーティングやその他の静的ファイルを追加する必要はありませんでした - それはすべてexpress.staticによって処理されます。
サーバー上でアクティブな作業を返す必要があるコンテンツの特定のルートを追加するだけで済みます。ここでの大きな利点は、CDN を使用してより多くのコンテンツ (社内の基幹業務アプリを実行している場合は nginx) をキャッシュできるため、サーバーの負荷が軽減されることです。
もちろん、デフォルトのファイル拡張子はいくつでも設定できますが、私はリストを短くする傾向があります。URL がアドレス バーに表示される可能性が高いリソース (常にではありませんが、通常は HTML ファイルを意味します) にのみ使用します。
Express.js を使用した静的コンテンツの提供に関する次のドキュメントをご覧ください。
これは、既定のファイル拡張子を静的コンテンツ要求に関連付ける一般的な方法は何ですか?で回答されています。.
favicon.icoの問題は、静的コンテンツを提供するルート フォルダーに favicon をドロップすることで解決できます。また、ドキュメント<link>
のを使用して参照する +Costa のソリューションを実装することもできます<head>
。
理論的には、ファビコンをルート フォルダーに配置する必要はありませんが、実際には、一部のブラウザーは<head>
、ドキュメントの で参照されていても、サイト ルートからそれを要求します。これにより、偽の 404 エラーが発生し、クライアント側のデバッグ ツール (Chrome 開発ツールなど) で確認できます。