リダイレクトエラーの対処法15選!.htaccessで転送できない原因とは?
2023.01.10
リダイレクトエラーの対処法は、症状・原因によって異なります。
とくに.htaccessを使用している場合は、些細な記述ミスからhttps化の設定ミスまで原因が幅広く、適切に対処しなければなりません。
そこで今回は、代表的なリダイレクループ・500エラー・WordPressに特化した対処法を原因別に解説します。
▼リダイレクの関連記事
.htaccessでリダイレクトされない状態とは?
.htaccessファイルを使って設定したリダイレクトが反映されない時の原因や対処法は、症状によって異なります。
中でも代表的なのが、下記2種類のリダイレクトエラーです。
▼代表的なリダイレクトエラー
|
画面表示 |
意味 |
リダイレクトループ |
「リダイレクトが繰り返し行われました。」
「リダイレクトが多すぎます。」 |
無限に繰り返されている
例:A→B→C→A |
500エラー |
「500 Internal Server Error」 |
サーバー側に問題が発生している |
本記事では、上記に加えWordPressならではの原因と対処法についてもご紹介していきます。
なお、リダイレクトや.htaccessの基礎、動作確認ができる無料の検証ツールが知りたいという方は、下記の記事を参照して下さい。
▼関連記事
リダイレクトループの原因と対処法
リダイレクトループとは、「Aページ→Bページ→Cページ→Aページ」といった具合に、延々と転送処理が続いている状態を指し、ワードプレスで発生しやすいのが特徴です。
リダイレクトループ(ERR_TOO_MANY_REDIRECTS)は、ほとんどの場合「リダイレクトが繰り返し行われました。」や「リダイレクトが多すぎます。」と表示されます。
ここからは、リダイレクトループが発生する主な原因とエラーの対処法について見ていきましょう。
▼リダイレクトループの主な「原因」と「対処法」
- URLやパーマリンクの設定ミス
- https化の設定ミス
- プラグインによる影響
- テーマによる影響
URLやパーマリンクの設定ミス
URLやパーマリンクの記述・設定ミスによるリダイレクトループは、下記のような状況で発生しやすいのが特徴です。
▼発生しやすいシチュエーション
- サイトのドメインを変更した
- ディレクトリ構成に手を加えた
URLやパーマリンクの設定ミスはリダイレクトループの主要原因とも言われており、解決するには下記の対処法が有効です。
▼対処法
- .htaccessに転送元と転送先のURLが正しく記載されているか確認し、記述ミスを修正する
- WordPressのパーマリンク設定を「基本」に戻してみる
https化の設定ミス
httpからhttpsへ転送する際も、リダイレクトループが発生しがちです。
代表的なエラーの対処法として、下記の2通りの方法が挙げられます。
▼対処法
- httpsが含まれているか確認する(WordPress管理画面の「設定」→「一般」)
- ドメイン名の前に「www.」を加えて解消するか試す
プラグインによる影響
WordPressでキャッシュ系やパーマリンクの変更に関わるプラグインを使用している場合、リダイレクトループが起こる可能性があります。
▼リダイレクトループの原因となるプラグイン
- Redirection
- W3 Total Cache
- WP touch
- WP no category base
- Custom Permalinks
- Auto OptimizeとLitespeed Cacheの併用
上記を利用している場合は、下記の手順に沿ってリダイレクトループの原因になっているプラグインを特定しましょう。
▼プラグインによるエラーの対処法
- 一時的にプラグインを停止する
- ブラウザのキャッシュを削除する
- リダイレクトループが解消したか確認する
- 原因であるプラグインから検証済みの類似プラグインに変更する
なお、ブラウザのキャッシュを削除する方法は、後述する「500エラーの原因と対処法」を参考にしてください。
テーマによる影響
テーマもリダイレクトループが発生する原因の1つです。
中でもPHPのバージョンと合っていないテーマは、リダイレクトループが起きやすい傾向が見られます。
可能であれば検証済みのテーマに変更するのが理想的ですが、まずは使用中のテーマを最新バージョンにアップグレードしてみましょう。
500エラーの原因と対処法
「サーバーに問題がある」という意味を持つ500エラーも、.htaccessによるリダイレクト設定でありがちなエラーです。
500エラーの原因と対処法は他のリダイレクトエラーや不具合にも当てはまるケースが多いため、解決策の基本と言って良いでしょう。
▼500エラーの主な「原因」と「対処法」
- 構文(コーディング)の記述ミス
- 改行コードの間違い
- ファイル名の間違い
- パーミッションの間違い
- 設置場所・影響範囲の間違い
- 複数の.htaccessが競合している
- ブラウザのキャッシュ機能による影響
- アクセスが一時的に集中している
- Googleクローラーの巡回頻度が異常に多い
構文(コーディング)の記述ミス
.htaccessのリダイレクト設定で500エラーが発生する原因として、最もありがちなのがコーディングの記述ミスです。
ここでは、.htaccessの記述ミスについて下記の4項目に分けて解説していきます。
▼記述ミスの解決に役立つ情報
- .htaccessの書き方ルール
- よくある記述ミス
- 正規表現の間違い
- 記述ミスを洗い出す無料ツール
.htaccessの書き方ルール
そもそも.htaccessには書き方ルールが定められており、1つでも守られていなければ500エラーが発生します。
▼.htaccessの書き方ルール
- 日本語、全角は使わない
- 必要な記述の先頭には「♯」を入れない(コメント扱いとなり、除外される)
- 文字コードはUTF-8(BOM無し)
- 改行コードはサーバーのOSに準ずる(LFが一般的)
- 最終行は改行して「空行」にする
「リダイレクトの用途別に.htaccessの正しい記述例が知りたい!」という方は、下記の記事を参考にしてください。
▼関連記事
よくある記述ミス
ここでは、.htaccessにありがちなよくある記述ミスについてご紹介します。
▼よくある記述ミス
- 「Files」が「File」になっているなど、単純なスペルミス
- 「RewriteBase」の記述が抜けている
- 「allow」と「deny」が逆になっている
- 「転送元」と「転送先」が同じURLになっている
- 自分用のメモ書きの先頭に「♯」を付けていない
正規表現の間違い
.htaccess では、いくつかの文字列を1つの形式で表す「正規表現」という記述方法が使えます。
ただし、正規表現を使ったコーディングに慣れていない方にとっては、ミスしやすいのが難点。
初めて.htaccessファイルを作成する際は、書き方が間違っていないか後述する検証ツールで確認してみましょう。
記述ミスを洗い出す無料ツール
「.htaccessの書き方に自信がない…」という方には、記述ミスを洗い出してくれる無料のチェックツールの活用をオススメします。
簡単4ステップで使えるうえ、ソフトをインストールする必要もありません。
▼「.htacsess check」の使い方
- 「.htacsess check」にアクセスする
- 入力フォームに.htacsessの内容をコピペする
- 入力フォームの左下にある「Submit Text Area」をクリックする
- 結果が表示される(記述ミス=赤線)
改行コードの間違い
改行コードとは、.htaccessファイルを含むテキストファイルで文字を折り返す際に使用する制御文字です。
ほとんどの場合は「LF」で問題なく作動しますが、本来はサーバーのOSによって適切な改行コードが決まっています。
▼各OSに適した改行コード
- UNIX/Linux/9以降のMacOS: LF(ラインフィード)で改行
- MacOS9以前のMac:CR(キャリッジリターン)で改行
- Windows:「LF」または両者を合わせた「CRLF」で改行
ファイル名の間違い
.htaccessの正しいファイル名は「.htaccess」です。
わずかな違いでもの500エラーの原因になるため、下記のようなミスに気を付けましょう。
▼ファイル名のよくあるNG例
- 「.txt」など拡張子が付いている
- 先頭に「.」ドットが入っていない
- ファイル名の前後に半角、または全角スペースが入っている
- ファイル名の一部、または全部が全角になっている
中でもWindows環境でありがちなのが、ファイル名にテキストエディタの拡張子が付いたままになっているケースです。
初期設定でOFFになっている「拡張子の表示」をONにして、「.htaccess.txt」から「.htaccess」のみに修正しましょう。
拡張子が削除できない時の対処法
「拡張子が自動的にプラスされて削除できない!」という場合は、下記の手順で修正します。
▼拡張子を削除する方法
- 一旦「.htaccess.txt」の状態でサーバーにアップロードする
- サーバー上で「.htaccess」にリネームする
パーミッションの間違い
パーミッションとは、書き込みや読み込み権限を表す属性数値で、.htaccessファイルをサーバーにアップロードする際に指定します。
.htaccessを使ったリダイレクト設定で指定するパーミッションは、「604」または「644」が一般的です。
ただし、レンタルサーバーごとに推奨されているパーミッションが違いますので、確認してみて下さい。
設置場所・影響範囲の間違い
.htaccessファイルは、設置した位置(ディレクトリ)以下のすべてに対して効果を発揮します。
言い換えれば、1つ上の階層もしくは1つ下の階層に配置してしまうと、意図した範囲で作動しないのです。
Webサイト全体を有効にしたい時は、index.htmlやindex.phpなどがある「TOPディレクトリ内」に.htaccessファイルを設置しましょう。
複数の.htaccessが競合している
複数の.htaccessファイルを設置することは可能ですが、同じ項目(リダイレクトなど)で指示が異なる場合は要注意。
同じ項目に対して異なる2つの指示が競合すると下位の内容が優先されるため、上位に設定したルールが反映されなくなるのです。
例えば下記の例では、どちらもリダイレクトという同じ項目を扱っていますが、書かれている指示が異なっているので、下位に設置した.htaccessファイルの内容が優先されます。
▼同じ項目で指示が異なるケース
- 上位に設置した.htaccessファイルの指示→全体にリダイレクト
- 下位に設置した.htaccessファイルの指示→サイト内の「blog配下」にリダイレクト
ブラウザのキャッシュ機能による影響
下記に当てはまる場合は、ブラウザのキャッシュ機能による影響を疑ってみましょう。
▼キャッシュ機能の影響を受けるケース
- 1度は成功したのに、転送先のURLだけを変更したら500エラーが発生した
- 不完全な状態でリダイレクトに成功し、修正後に500エラーが発生した
Google ChromeやMicrosoft Edgeといった主要ブラウザには、1度でも成功したリダイレクト先のURLを記憶するキャッシュ機能が備わっています。
注目すべきは、再設定した.htaccessよりもキャッシュ済みの情報の方が優先される、という点でしょう。
とくに恒久的な転送を意味する301リダイレクトでURLを間違えてしまうと、たとえ修正後の.htaccessを設定し直しても、過去にキャッシュされた変更前のURLに転送され続けるケースが多いのです。
最も理想的なのは予防ですが、すでに発生している場合は後述する「キャッシュを削除する方法」を試してみて下さい。
▼キャッシュ対策
- 予防:テスト中は301リダイレクトを一時的な転送を意味する302リダイレクトに置き換える
- 対処法:キャッシュを削除する
キャッシュを削除する方法
書き方も設置場所も間違っていないのにリダイレクトが効かない、または古い設定が解除できない時は下記の手順に沿ってキャッシュを削除してみましょう。
▼ブラウザのキャッシュを削除する手順
- 「F12」で「デベロッパーツール」を開く(Macはcommand + option + I)
- 画面右上の「ページリロード」のボタン上で右クリック
- 「キャッシュの消去とハード再読み込み」を選択
アクセスが一時的に集中している
こちらは、リダイレクトに限らず500エラー全般に当てはまる原因です。
何もしていないのに順調に稼働していたリダイレクトで急に500エラーが発生した、そんな時は一時的なアクセス急増が原因と考えられます。
通常、急激にアクセス数が上昇した時は「503 Service temporarily unavailable」と表示されますが、サーバーの処理速度が追いつかないと500エラーが発生することもあるのです。
場合によっては、負荷がかかり過ぎてサーバーがダウンすることもあります。
▼アクセス過多によってエラーが発生するケース
- 大規模セール中のECサイト
- 題材にしていた芸能人が事件を起こし、突然話題になった
- SNSやTVで速報が届くようなニュース
- スパム攻撃を受けている
この場合、基本的にはアクセスが収まるかサーバーが復旧するまで待つしかありません。
ただし、スパム攻撃やサーバーダウンに対しては下記のような処置を講じておくべきでしょう。
▼アクセス過多による500エラーの対処法
- 同じIPアドレスからスパム攻撃を受けている→攻撃元からのアクセスを特定して遮断する
- 日常的にサーバーがダウンする→スペックの高いサーバーに乗り換える
Googleクローラーの巡回頻度が異常に多い
ごく稀ではあるものの、Googleクローラーの巡回頻度が異常に多くなるケースがあります。
クローラーの巡回頻度が過剰なほど増えると、前述したアクセス集中と同じ状態になるため、サーバーに負荷がかかって500エラーが発生してしまうのです。
ちなみに、こちらも前述したアクセス集中と同じく500エラー全般に当てはまる原因です。
クローリング頻度を制限する方法
クローリングの頻度を確認するだけなら、サーバーログファイルでも可能です
しかし、同時に制限もしたいならサーチコンソールを活用してみましょう。
▼クローリング頻度の確認と制限する方法
- サーチコンソールにアクセスする
- 左メニューの「設定」をクリック
- 「クロールの統計情報」をクリック
- 500エラーが発生しているURLのプロパティを選択
- 「Google の最大クロール頻度を制限する」を選択
- パラメーターを「低」に調整して「保存」する
WordPressでリダイレクトが反映されない原因と対処法
ここからは、WordPressならではの原因と対処法について解説していきます。
▼WordPressで発生する500エラーの主な「原因」と「対処法」
- WordPressで500エラーが発生しやすい理由
- .htaccessが非表示設定になっている
- .htaccessが作成されていない
WordPressでリダイレクトエラーが発生しやすい理由
PHP・WordPress本体・テーマ・プラグインは複雑に連携しています。
そのため、組み合わせの相性が悪かったりバージョンの差が大きかったりすると、リダイレクトループだけでなく500エラーも発生しやすくなるのです。
▼WordPress特有の原因
- PHPのバージョンアップ
- WordPressのアップデート
- テーマのアップデート
- PHP編集によるテーマのカスタマイズ
- プラグインの更新や追加
このケースが疑われる場合は、前述した「リダイレクトループの原因と対処法」を参考にしてください。
.htaccessが非表示設定になっている
ドット(.)から始まるファイルの多くは、システム動作に影響を与える重要なファイルですから、ほとんど変更する必要はありません。
だからこそ誤って変更しないよう、あえてドットから始まる「隠しファイル」になっているのです。
FTPソフトやPC環境で隠しファイルが非表示になっている場合は、たとえ.htaccessの内容が正しくてもリダイレクト設定は反映されません。
▼.htaccessファイルの非表示を解除する方法
- FFFTP(FTPソフト):「表示」→「.で始まるファイルを表示」にチェックを入れる
- PC環境:「ウィンドウズマーク」→「エクスプローラー」→「表示」→「オプション」→「登録されている拡張子は表示しない」のチェックを外す
.htaccessが作成されていない
意外と盲点なのが、そもそも.htaccessファイルが作成されていないというケースです。
WordPressを導入すると、通常は.htaccessファイルも一緒にインストールされます。
しかし、WordPressの導入時に不具合が発生すると.htaccessファイルがインストールされないことがあるのです。
設定したはずのリダイレクトが反映されず、前述した対処法を試しても.htaccessファイルがみつからなかった場合は、下記を試してみましょう。
▼.htaccessファイルが作成されていなかった時の対処法
- FTPソフトでサーバーにアクセスする
- WordPressがインストールされたディレクトリのフォルダ上で右クリック
- 「属性の変更」でパーミッションを「755」に変更
- WordPressの管理画面の「設定」をクリック
- 「パーマリンク設定」をクリック
- 何も変更せず、そのまま「変更を保存」をクリック
まとめ
サーバーへのアクセス権限を持っていないスタッフでも、簡易的にリダイレクト設定を可能にしてくれるのが.htaccessの強みです。
その反面、コーディングに慣れていない人やWordPressの構造に詳しくない人が扱うと、些細なミスでリダイレクトエラーが頻発するという弱点を併せ持っています。
失敗してもリカバーできるよう、必ず302でテストを行ってから恒久的な301に切り替えるのが大前提。
もしリダイレクトエラーが発生した場合は、ぜひ本記事で解説している対処法を参考にしてみて下さい。
関連