このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
このドキュメントは古く、ベース版は次の日付に更新されました: 2026年4月3日.
英語のドキュメントへバージョン履歴
- "routing.domains設定によるドメインベースのロケールルーティングを追加。"v8.5.02026/4/2
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るこのドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。
ドキュメントへのGitHubリンクドキュメントのMarkdownをクリップボードにコピー
カスタムドメイン
Intlayerはドメインベースのロケールルーティングをサポートしており、専用のホスト名から特定のロケールを提供できます。たとえば、中国の訪問者を intlayer.org/zh ではなく intlayer.zh に誘導できます。
仕組み
routing の domains マップは、各ロケールをホスト名に関連付けます。Intlayerはこのマップを次の2か所で使用します。
- URLの生成 (
getLocalizedUrl): ターゲットのロケールが現在のページとは 異なる ドメインにある場合、絶対URLが返されます(例:https://intlayer.zh/about)。両方のドメインが一致する場合、相対URLが返されます(例:/fr/about)。 - サーバープロキシ(Next.js & Vite): 着信リクエストは、到着したドメインに基づいてリダイレクトまたはリライトされます。
排他的ドメイン vs 共有ドメイン
主な違いは 排他性 です。
- 排他的ドメイン - 1つのロケールのみがそのホスト名にマップされます(例:
zh → intlayer.zh)。ドメイン自体がロケールを識別するため、パスにロケールプレフィックスは追加されません。https://intlayer.zh/aboutは中国語のコンテンツを提供します。 - 共有ドメイン - 複数のロケールが同じホスト名にマップされます(例:
enとfrの両方がintlayer.orgにマップされます)。通常のプレフィックスベースのルーティングが適用されます。intlayer.org/fr/aboutはフランス語のコンテンツを提供します。
設定
domains にリストされていないロケールは、ドメインの上書きなしで標準のプレフィックスルーティングを引き続き使用します。
URLの生成
getLocalizedUrl は、呼び出しコンテキストに基づいて正しいURLタイプを自動的に生成します。
同一ドメインのロケール(相対URL)
ドメインをまたぐロケール(絶対URL)
ロケール自身のドメインからの提供
現在のドメインの自動検出
currentDomain はオプションです。省略した場合、 getLocalizedUrl は次の順序で解決します。
- 絶対入力URLのホスト名(例:
https://intlayer.org/about→intlayer.org)。 - ブラウザ環境における
window.location.hostname。 - いずれも利用できない場合(明示的なオプションなしのSSR)、同一ドメインのロケールに対して相対URLが返され、絶対URLは生成されません。これが安全なフォールバックです。
ドメインを使用した getMultilingualUrls
getMultilingualUrls はすべてのロケールに対して getLocalizedUrl を呼び出すため、呼び出し元のドメインに応じて相対URLと絶対URLが混在して生成されます。
これらの絶対URLは、SEO用の <link rel="alternate" hreflang="..."> タグですぐに使用できます。
プロキシの動作
Next.js
intlayerProxy ミドルウェアはドメインルーティングを自動的に処理します。 middleware.ts に追加してください。
リダイレクト - 指定されたロケールプレフィックスに対してリクエストが間違ったドメインに到着した場合:
リライト - プレフィックスなしでロケールの排他的ドメインにリクエストが到着した場合:
Vite
intlayerProxy Viteプラグインは、開発中に同じロジックを適用します。
注意: ローカル開発では通常localhost上にいるため、ドメイン間のリダイレクトは別のローカルポートではなくライブドメインを指します。マルチドメインルーティングをローカルでテストする必要がある場合は、hostsファイルの上書き(例:127.0.0.1 intlayer.zh)またはリバースプロキシを使用してください。
ロケールスイッチャー
next-intlayer の useLocale フックは、ドメインを認識したナビゲーションを自動的に処理します。ユーザーが別のドメインのロケールに切り替えると、Next.jsルーターはオリジンを越えることができないため、フックはクライアント側のルータープッシュではなく、フルページナビゲーション( window.location.href )を実行します。
追加の設定は不要です。 useLocale は内部的に window.location.hostname を検出し、 router.replace (同一ドメイン)と window.location.href (ドメイン間)のどちらかを選択します。
SEO: hreflang 代替リンク
ドメインベースのルーティングは、検索エンジンに各言語でインデックスを作成するURLを伝えるために、 hreflang と共に一般的に使用されます。 getMultilingualUrls を使用して、代替URLの完全なセットを生成します。
これにより、以下が生成されます。
コアユーティリティ
テーブルをモーダルで開き、すべてのデータを明確に表示
| ユーティリティ | 説明 |
|---|---|
getLocalizedUrl(url, locale, { currentDomain }) | ターゲットロケールが現在のドメインにあるかどうかに応じて、相対URLまたは絶対URLを返します。 |
getMultilingualUrls(url, { currentDomain }) | 必要に応じて相対URLと絶対URLを混合し、ロケールをキーとしたローカライズ済みURLのマップを返します。 |
getPrefix(locale, { domains }) | 排他的ドメインのロケールには空のプレフィックスを返し、それ以外の場合は通常のプレフィックスを返します。 |