WordPressで古いURLから新しいURLへ転送するため、.htaccessに301リダイレクトを追加した。それなのに古いページが表示される、404エラーになる、別のURLへ飛んでしまう。
この場合、書いた内容が間違っているとは限りません。.htaccessを置いた場所、WordPressの記述との順番、ブラウザやサーバーのキャッシュなど、別のところに原因があることもあります。
同じ記述を何度も書き直す前に、どこまで転送処理が動いているかを順番に調べる必要があります。
表示される症状から原因を絞る
まず、古いURLへアクセスしたときに何が表示されるかを見ます。症状によって、調べる場所が変わるためです。
| 表示される症状 | 考えられる原因 | 最初に見る場所 |
|---|---|---|
| 古いページがそのまま表示される | .htaccessが読み込まれていない、キャッシュが残っている | ファイルの場所、サーバー構成、キャッシュ |
| 404エラーになる | 転送元の指定が実際のURLと合っていない | URLのパス、末尾のスラッシュ |
| 500エラーになる | .htaccessの書き方に誤りがある | 直前に追加した記述 |
| リダイレクトが繰り返される | 複数の転送設定がぶつかっている | SSL、www、プラグインの設定 |
| 関係のないページへ移動する | 転送条件が広すぎる | 正規表現、ルールの順番 |
| 自分のパソコンだけ以前の転送先へ飛ぶ | 301の情報がブラウザに残っている | シークレットウィンドウ、別端末 |
500エラーが出た場合は、そのまま編集を続けず、変更前の.htaccessへ戻します。一文字の抜けや余分な記号でも、サイト全体が表示されなくなることがあります。
編集前に.htaccessをバックアップする
.htaccessを開いたら、編集する前のファイルをパソコンへ保存します。ファイル名は日付を付けておくと見分けやすくなります。
例:.htaccess-backup-20260718
WordPressの管理画面に入れなくなった場合でも、FTPやサーバーのファイル管理画面から元のファイルを戻せます。
現在の.htaccessがすでに壊れているように見えても、先に保存してください。あとから既存の設定を確認するときに必要になります。
.htaccessを置いた場所が合っているか
レンタルサーバーでは、複数のドメインやサブドメインを同じ契約内で管理できます。そのため、編集した.htaccessと、実際に公開中のサイトが使っている.htaccessが別になっていることがあります。
次の点を見直します。
- WordPressが入っているフォルダと同じ階層か
- 対象ドメインの公開フォルダを開いているか
- サブドメイン側の.htaccessを誤って編集していないか
- ファイル名が正確に
.htaccessになっているか - パソコン上で
.htaccess.txtになっていないか
どの公開フォルダが使われているか分からない場合は、サーバーの独自ドメイン設定を開きます。そこに表示される公開フォルダと、FTPで開いている場所を照らし合わせます。
WordPressの記述内へ追加していないか
WordPressが作る.htaccessには、通常「BEGIN WordPress」と「END WordPress」で囲まれた部分があります。
この範囲は、パーマリンク設定の保存やプラグインの操作によって書き直されることがあります。独自のリダイレクト設定を範囲内へ追加すると、あとから消えることがあります。
独自の転送設定は、内容に問題がなければ「BEGIN WordPress」より上へ置くのが一般的です。
ただし、すでに次の設定がある場合は、単純に上へ移動するだけでは直りません。
- httpからhttpsへの転送
- wwwあり・なしの統一
- 別ドメインへの転送
- スマートフォン用ページへの振り分け
- セキュリティプラグインが追加した記述
- キャッシュプラグインが追加した記述
上から順番に処理されるため、先に書かれた条件で転送先が決まり、あとに追加した設定まで処理が進まないことがあります。
最初から301で試さない
301は、URLが恒久的に移転したことを伝える転送です。ブラウザに転送先が記録されるため、設定を書き直しても以前の転送先へ移動し続けることがあります。
動作確認中は、いったん302で試します。
確認する流れは次のとおりです。
- 変更前の.htaccessをバックアップする
- 転送するURLを一つだけに絞る
- 302で転送設定を追加する
- シークレットウィンドウから古いURLを開く
- 正しい新URLへ移動するかを見る
- 問題がなければ301へ変更する
複数のURLを一度に設定すると、どの条件で失敗しているか分からなくなります。まず一つのページで動かし、そのあと対象を増やします。
キャッシュを消しても直らないときに見る場所
WordPressでは、ブラウザ以外にも複数の場所にキャッシュが残ります。
- WordPressのキャッシュプラグイン
- レンタルサーバーの高速化機能
- CDN
- セキュリティサービス
- プロキシサーバー
ブラウザの履歴を消しただけでは、サーバー側の古い情報が返されることがあります。
一方、キャッシュプラグインを停止しても、サーバーの高速化機能やCDNが動いていれば表示は変わりません。利用している機能を確認し、一つずつキャッシュを削除します。
会社や店舗のサイトでは、すべてのキャッシュを急に停止すると表示速度へ影響することがあります。営業時間外に作業するか、対象URLだけを削除できる機能があれば、そちらを使います。
.htaccessを使えないサーバーもある
.htaccessは、主にApache系のWebサーバーで使われる設定ファイルです。Nginxだけで動いているサーバーでは、.htaccessを置いても読み込まれません。
また、Apacheを使っていても、契約内容やサーバー側の設定によって一部の命令が使えないことがあります。
確認する場所は、レンタルサーバーのマニュアルです。
- .htaccessが利用できるか
- リダイレクト設定に制限があるか
- 推奨されているファイルの設置場所
- ファイルの権限
- サーバー独自の転送機能がないか
サーバーの管理画面に転送設定が用意されている場合は、.htaccessと両方で同じ転送を設定しないほうが安全です。設定が重なると、転送が繰り返される原因になります。
リダイレクトループが起きたときの確認順
「リダイレクトが繰り返し行われました」と表示される場合は、転送元と転送先が互いに行き来しています。
よくある組み合わせは次のとおりです。
- .htaccessではwwwなし、WordPressではwwwありに設定している
- サーバー側ではhttps、プラグイン側ではhttpへ転送している
- 旧ドメインと新ドメインの両方に転送設定が残っている
- CDNとサーバーでSSLの扱いが異なる
- 転送先URLが、転送条件にも当てはまっている
関連する設定を全部書き直すのではなく、どこで転送が始まっているかを調べます。.htaccess、WordPressプラグイン、サーバー管理画面、CDNの順で設定を確認すると見落としを減らせます。
転送後は新URLまで確認する
古いURLから新しいURLへ移動しただけでは、確認は終わりません。新しいページが正常に表示されるところまで見ます。
次の状態になっていないかを調べます。
- 新URLが404エラーになっている
- 新URLから別のURLへさらに転送される
- パソコンでは開くがスマートフォンではループする
- URLの末尾に不要な文字が付いている
- httpやwwwの有無が想定と異なる
- 一部の下層ページだけ転送されない
転送を何段も重ねると、表示までの時間が延び、あとから設定を管理しにくくなります。古いURLから最終的な新URLへ、できるだけ直接転送します。
自分で直せないときにまとめておく情報
外部へ状況を伝える場合は、「リダイレクトができない」だけでは原因を調べられません。次の情報をまとめます。
- 転送元のURL
- 転送先のURL
- 実際に表示されるページやエラー
- 使用しているレンタルサーバー
- WordPressを使っているか
- リダイレクト関連のプラグイン名
- 問題が起きる直前に変更した内容
- 現在の.htaccess
- すでに試したこと
.htaccessにアクセス制限や認証情報が書かれている場合は、そのまま公開の場所へ貼り付けません。内容を見てもらう相手と共有方法を決めてから渡します。
まとめ
WordPressの301リダイレクトが反映されないときは、記述だけを何度も変えても直らないことがあります。
先に見るのは、次の5点です。
- 編集している.htaccessの場所
- WordPressの記述との順番
- ブラウザ、サーバー、CDNのキャッシュ
- サーバーが.htaccessへ対応しているか
- SSLやwwwの転送設定と重なっていないか
変更前のファイルをバックアップし、一つのURLを302で試すと原因を追いやすくなります。正常に動いたことを確認してから301へ変更してください。

