このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
バージョン履歴
- "configOptionsを単一のoptionsオブジェクトにマージ。proxyをintlayer()にバンドル"v9.0.02026/6/25
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
intlayerProxy
intlayerProxyは、開発サーバー、プレビューサーバー、および本番SSR(Nitro / TanStack Start)のすべての環境に対応する言語ルーティングミドルウェアを登録するViteプラグインです。
Intlayer v9以降、intlayerProxyは自動的にメインのintlayer()プラグインに含まれ、routing.enableProxy: trueを介してデフォルトで有効になります。より低レベルな制御が必要な場合や、標準のintlayer()セットアップ以外で使用する場合にのみ、個別に登録する必要があります。
使用方法
intlayer()の一部として(推奨、v9+)
intlayerProxyを個別に登録する代わりに、メインプラグインにproxyオプションを渡します:
コードをクリップボードにコピー
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [ intlayer({ proxy: { ignore: (req) => req.url?.startsWith("/api"), }, }), ],});スタンドアロン(必要な場合)
コードをクリップボードにコピー
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [intlayer()],});オプション
コードをクリップボードにコピー
import type { IntlayerProxyPluginOptions } from "vite-intlayer";すべてのオプションは任意であり、単一のオブジェクトとして渡されます:
テーブルをモーダルで開き、すべてのデータを明確に表示
| オプション | 型 | 説明 |
|---|---|---|
ignore | (req: IncomingMessage) => boolean | リクエストを言語ルーティングから除外する述語。リクエストをスキップするにはtrueを返します(例:APIルート、ヘルスチェック)。 |
configOptions | GetConfigurationOptions | getConfiguration()に転送されるIntlayer設定のオーバーライド。プロキシに特定の設定ファイルを読み込ませたり、値を上書きしたりする必要がある場合に使用します。 |
例
コードをクリップボードにコピー
intlayerProxy({ ignore: (req) => req.url?.startsWith("/api"), configOptions: { configFile: "./config/intlayer.config.ts" },});createIntlayerProxyHandler
createIntlayerProxyHandlerは、すべての言語ルーティングロジックを含む、特定のフレームワークに依存しないNode.jsの(req, res, next)スタンドアロンミドルウェアを作成します。ViteプラグインAPIが使用できない環境(例:純粋なNode.jsサーバーやカスタムNitroモジュール)で有用です。
コードをクリップボードにコピー
import { createIntlayerProxyHandler } from "vite-intlayer";const handler = createIntlayerProxyHandler({ ignore: (req) => req.url?.startsWith("/api"), configOptions: { configFile: "./config/intlayer.config.ts" },});// Express / Connectapp.use(handler);本番SSR(TanStack Start / h3を介した Nitro)
コードをクリップボードにコピー
// server/middleware/intlayerProxy.tsimport { fromNodeMiddleware } from "h3";import { createIntlayerProxyHandler } from "vite-intlayer";export default fromNodeMiddleware( createIntlayerProxyHandler({ ignore: (req) => req.url?.startsWith("/api"), }));ルーティングの動作
ミドルウェアは、next-intlayerミドルウェアのルーティングロジックを反映しており、すべてのIntlayerルーティングモードをサポートしています。
ルーティングモード
テーブルをモーダルで開き、すべてのデータを明確に表示
| モード | ブラウザに表示されるURL | 動作 |
|---|---|---|
prefix | /ja/about | デフォルト。URLの言語プレフィックス。prefix-allが有効でない限り、デフォルト言語はプレフィックスなしのURLにリダイレクトします。 |
prefix-all | /en/about, /ja/about | デフォルト言語を含むすべての言語が常にプレフィックス付きになります。 |
no-prefix | /about | URLに言語は含まれません。言語はCookieにのみ保存され、内部的にURLの書き換えが行われます。 |
search-params | /about?locale=ja | クエリパラメータとして渡される言語。パラメータがない、または古い場合に、localeパラメータを追加/更新するためにリダイレクトします。 |
検出の優先順位
- URLパスのプレフィックス(例:
/ja/about→ja)。 - Cookie / localStorageの値(
intlayer-locale)。 Accept-Languageヘッダー。- 設定ファイル内の
defaultLocale。
自動バイパス
ミドルウェアは、言語処理を行うことなく、常に以下のリクエストをそのまま通します:
ignore述語に一致するリクエスト。/node_modules/**/@**– Viteの内部処理(@vite/、@fs/、@id/など)。/_**– サーバーの内部処理(__vite_ping、__manifestなど)。- パスがファイル拡張子で終わるリクエスト(静的アセット)。静的アセットのパスに言語プレフィックスが存在する場合(例:
/ja/logo.png)、ファイルが正しく提供されるようにプレフィックスが削除されます。
ドメインルーティング
Intlayer設定でrouting.domainsが構成されている場合、ミドルウェアはドメインをまたぐ言語ルーティングを処理します:
domains.zh = "intlayer.zh"のとき、intlayer.org上の/zh/aboutに対するリクエストはhttps://intlayer.zh/aboutにリダイレクトされます。intlayer.zh/aboutへのリクエストは、[locale]ルートパラメータが入力されるように、内部的に/zh/aboutに書き換えられます。
リダイレクトループ防止
ミドルウェアは、2秒のスライディングウィンドウ内で、originalUrl → newUrlのペアごとのリクエストに対するリダイレクト回数を追跡します。ウィンドウ内で10回を超えるリダイレクトが発生した場合、無限ループに陥るのを防ぐために、説明的なエラーを含む500応答を返します。
Nitro / 本番SSR(自動注入、v9+)
intlayerProxyがViteプラグインとして使用される場合、.nitroプロパティを保持します。nitro/viteビルドプラグインはこのプロパティを読み取り、nitroConfig.modulesにプッシュします。これにより、intlayerNitroHandlerが自動的にNitroサーバーミドルウェアとして登録されます。本番SSRのための手動設定は不要です。
Nitroハンドラーは、h3 v2のWeb Fetch APIイベントモデルを使用しているため(fromNodeMiddlewareではない)、Node、Bun、Deno、エッジランタイムなど、すべてのNitroプリセットと互換性があります。
非推奨のエイリアス
テーブルをモーダルで開き、すべてのデータを明確に表示
| 非推奨のシグネチャ | 代替品 |
|---|---|
intlayerMiddleware | intlayerProxy |
intLayerMiddlewarePlugin | intlayerProxy |