日本語と英語のサイトを Astro で作り、英語ページが無いところを日本語ページで補う(fallback)設定にしていると、英語側のURLを1本ずつ開いて確かめる機会は限られます。ところが、ページ名がロケールコードと同じ文字で始まると、英語側のURLそのものが別の文字列で生成される不具合がありました。/ja/japan-office/ の英語側が /en/enpan-office/ になる、という形です。
Astro 7.3.0 でこの不具合が修正されました。本記事では、日本語を既定にした設定で実際にビルドし、どの版で壊れて直ったのか、自分のサイトが該当するかの確かめ方を整理します。
7.3.0 の変更履歴に書かれた不具合
Astro の変更履歴(CHANGELOG)の 7.3.0 の Patch Changes に、#17861 として次の修正が載っています。
Fixes i18n fallback routes being generated with a corrupted path when the locale code also appears at the start of a later path segment.
例は src/pages/en/enterprise.astro と fallback: { es: 'en' } の組み合わせで、fallback のURLが /es/enterprise ではなく /es/esterprise で生成されていました。修正後は、先頭のロケールのセグメントだけを書き換えます。
npm registry によると 7.3.0 の公開は2026年9月3日で、2026年9月29日時点の最新は 7.3.5 です。
日本語サイトの構成で再現した結果
日本語を既定にしたサイトでも起きるかを、次の条件(ケース2)でビルドして確かめました(2026年9月29日、Linux、Node.js 22、npm registry から各版の astro をインストールし、各版1回ずつ npx astro build で静的出力)。
// astro.config.mjs(検証ケース2の i18n 設定)
import { defineConfig } from 'astro/config';
export default defineConfig({
i18n: {
locales: ['ja', 'en'],
defaultLocale: 'ja',
fallback: { en: 'ja' },
routing: { prefixDefaultLocale: true },
},
});
fallbackType は未指定(既定の redirect)です。src/pages/ja/ に index・japan-office・jazz・recruit、src/pages/en/ に index だけを置き、英語ページの無い3つを fallback の対象にしました。
| 版 | dist/en/ に生成されたディレクトリ |
|---|---|
| 6.4.8 / 7.0.0 / 7.2.10 | enpan-office、enzz、index、recruit |
| 7.3.0 | index、japan-office、jazz、recruit |
ja で始まる japan-office と jazz だけが、enpan-office と enzz に変わっています。recruit は影響を受けていません。6系の最終版である 6.4.8 でも同じ結果でした。
7.2.10 で生成された dist/en/enpan-office/index.html の中身は、次のような転送用のページでした。
<title>Redirecting to: /ja/enpan-office/</title>
<meta http-equiv="refresh" content="2;url=/ja/enpan-office/">
<meta name="robots" content="noindex">
<link rel="canonical" href="/ja/enpan-office/">
転送先の /ja/enpan-office/ は、どこにも存在しないページです。canonical もその存在しないURLを指しています。そして、本来あるべき /en/japan-office/ は生成されていません。

図で見てほしいのは、英語側のURLと転送先の両方が変わる点です。7.3.0 では dist/en/japan-office/index.html が生成され、/ja/japan-office/ へ転送されました。
壊れる条件と、壊れなかった構成
変更履歴の例に合わせたケース1(en を既定、fallback: { es: 'en' }、prefixDefaultLocale: true、fallbackType: 'rewrite')では、7.2.10 で es/esterprise が生成され、/es/enterprise/ は生成されませんでした。7.3.0 では es/enterprise が生成されました。redirect ではなく rewrite を選んでいても、URLの生成は同じように壊れていたことになります。
ケース3は、既定ロケールに接頭辞を付けない構成です(prefixDefaultLocale: false、fallbackType: 'rewrite'、日本語ページは src/pages/ 直下)。japan-office・jazz に加え、英語のロケールコードで始まる entry も置きましたが、7.2.10 と 7.3.0 の出力は同一で、en/entry・en/japan-office・en/jazz のように正しい名前で生成されました。この条件では壊れませんでした。
ただし、ケース3はケース2と接頭辞の有無と fallbackType の2点が違い、どちらが効いたかは切り分けていません。確かめたのは3構成・各版1回のビルドの静的出力だけで、SSR(オンデマンド描画)やミドルウェア経由の挙動、astro dev の開発サーバー、他の設定の組み合わせは未検証です。
fallback は翻訳が追いつかない間を埋める仕組みなので、英語ページが揃っていない期間ほど、対象になりうるページが増えます。翻訳の進め方は多言語サイトを「AI翻訳で安く」の落とし穴で扱っています。
自分のサイトが該当するかを確かめる
発注側は制作会社に依頼して、制作側は手元のリポジトリで、次の順に確かめます。
- 使っている版を確かめる。
npm ls astroで入っている astro の版を見ます。7.3.0 以上なら、この修正は入っています。 - i18n の設定を確かめる。
astro.config.mjsのi18nにfallbackがあるか、routing.prefixDefaultLocaleがtrueかを見ます。検証で壊れたのは、fallback があり、既定ロケールにも接頭辞を付けた構成です。 - ページ名を確かめる。 fallback 元のロケールのページで、2つ目以降のセグメントが fallback 先のロケールコードで始まるものを探します。今回の例なら、
jaで始まるjapan-officeやjazzです。変更履歴の例ではenで始まるenterpriseでした。 - ビルド結果を一覧する。
npm run buildのあと、fallback 先のディレクトリにできたページを並べます。
# fallback 先(例: en)に生成されたページの一覧
find dist/en -name index.html | sort
# fallback 元(ja)と並べて、名前の食い違いを探す
diff <(cd dist/ja && find . -name index.html | sort) \
<(cd dist/en && find . -name index.html | sort)
# 転送先の一覧(redirect の場合)
grep -rho 'content="[0-9]*;url=[^"]*"' dist/en | sort
dist/en に enpan-office のような元と違う名前があれば該当します。英語だけにあるページも diff に出るため、en で始まる名前に絞って見てください。転送先に dist/ja に無いパスが出てこないかも確かめます。
7.3.0 以上へ上げる前後で見ること
直すには astro を 7.3.0 以上へ上げます。6.4.8 でも再現したため、6系のままでは直りません。7.0 への移行を含めた判断は、Astro 7.0 へ上げるか、作り直すかで整理しています。
上げる前に dist/en の一覧と転送先の一覧を保存し、上げたあとに同じコマンドで次の3点を比べます。
enpan-officeのような壊れた名前が消え、japan-officeのように元と同じ名前で生成されているか- 転送先が、
dist/jaに実在するページを指しているか - 該当しないページ(今回の
recruitなど)の一覧が変わっていないか
修正後は、壊れていたURLが生成されなくなります。7.3.0 では en/enpan-office は出力されませんでした。壊れたURLがサイト内のリンクやサイトマップに出ていたかはサイトごとに確かめ、旧URLを redirects などで残すかを判断してください。
7.3.0 にはほかの機能追加や修正も含まれます。変更履歴の 7.3.0 から最新までの節に目を通し、一覧の比較とあわせてプレビューで主要ページを開いて確かめてください。
2026年9月29日に、Astro の変更履歴(packages/astro/CHANGELOG.md の 7.3.0 の節、#17861)と npm registry の astro の公開情報を直接開いて照合し、Linux・Node.js 22 の環境で astro 6.4.8・7.0.0・7.2.10・7.3.0 を各1回ビルドして静的出力を確かめました。検証は本文の3ケースに限り、SSR・ミドルウェア経由の挙動、開発サーバー、他の設定の組み合わせ、7.3.1 以降の版、ホスティング先での転送や404、検索エンジンでの扱いは検証していません。#17861 のプルリクエスト本体と Astro 公式ブログの 7.3 の告知は開けておらず、根拠にしていません。
多言語サイトの保守や Astro の更新は、グリームハブへご相談ください。









