記事を投稿したら別のページが消えた!?WordPressで起きるURL競合トラブル

先日、WordPress で構築したサイトで「特定のページが表示されなくなった」というご相談を受けました。
調査したところ、投稿ページの URL に使う“英字部分”であるスラッグを「n」に設定すると、固定ページ「news」が見つからない(404エラー)になるという現象であることがわかりました。
スラッグは自由に設定できますが、今回のように特定の文字列が別ページへ影響を及ぼすことがあるため注意が必要です。
スラッグには「使えない単語」が存在する
WordPress は、特定の単語をスラッグに使えません。WordPress がシステム内部で利用している“予約語”と呼ばれるものです。
例えば post、page、tag などが該当し、これらをスラッグに設定するとページが正しく動作しません。
ただし今回問題になった「n」は、この予約語一覧には含まれていません。それにも関わらず不具合が起きた点が今回のポイントです。
WordPressの予約語一覧
WordPressのURL判定を支える「リライトルール」
WordPress は、アクセスされた URL を「どのページを表示するか」に変換するために、リライトルール(URL の変換ルール)を自動生成しています。
例えば /news/ にアクセスがあれば、「これはニュースページだな」と判断するためのルールが裏側で働いています。
ところが、このルールは似たような URL があると競合しやすいという特徴があります。特に「1〜2文字の短い文字列」は広範囲にマッチしやすいため、意図せず他のページに影響してしまうことがあります。
今回の問題が起きた理由
投稿ページのスラッグを「n」にしたことで、WordPress が内部処理で以下のように誤って解釈してしまいました。
/news/→ 「n の配下の URL」として扱われてしまった- 本来の固定ページ
/news/にマッチしなくなり 404 エラーに
つまり、短すぎるスラッグ「n」が、「news」と部分一致してしまい、URL の解釈が上書きされたのが原因です。
実際にスラッグを別の単語に変更すると、固定ページは問題なく表示されるようになりました。
今回のケースから得られるポイント
- 1〜2文字の非常に短いスラッグは URL の競合を起こしやすい
- 予約語でなくても問題が発生することがある
- 固定ページと投稿ページで似た URL を使うとトラブルが起こりやすい
WordPress の URL 設計は、一見シンプルに見えてもサイト全体に影響を与える重要な要素です。
「短すぎるスラッグや単語の重複は避ける」ということを意識すると、こうした予期せぬ不具合を防ぐことができます。
弊社のサポートについて
弊社では、WordPress のサイト構築・リニューアル・不具合調査など、幅広いサポートを提供しています。 WordPress に関するお困りごとはお気軽にご相談ください。
