WordPressにアクセスしようとしたら”403 Forbidden”と表示されてエラーが出てしまう。これはどのようなエラーなのか、どのように対処すれば良いのか?
403 Forbiddenのようなエラー画面が表示されると不安になる人も多いですが、本記事ではこのようにお悩みの方に向けて、WordPressの403エラーの原因と対処方法を、画像を用いてわかりやすく解説します。ぜひ参考にしてエラーに対処していただければと思います。
WordPress (ワードプレス) の403エラーとは
はじめにWordPressの403エラーとはそもそも何かという点を解説します。WordPressの403エラーとは、”ブラウザとWebサーバー間の通信用HTTPSステータスコードの一種”で、Webサーバーからの反応を表します。ステータスコードのなかでも”403 Forbiddenエラー”は、”Webサーバーがブラウザからリクエストを受信したが処理しない”という意味を持つコードです。
なぜWebサーバーがリクエストを受信したのにもかかわらず処理をしてくれないのかという点については、アクセス権がないためです。例えばWebサーバーの管理者にしかアクセス権が設定されていないページにアクセスする場合、管理者でない人はWebサーバーにリクエストを送っても処理してくれません。
WordPress (ワードプレス) の403エラーの原因
WordPressの403エラーが発生する原因には以下が挙げられます。順に解説します。
- 海外アクセスの制限
- functions.phpの問題
- サーバーの凍結
- .htaccessの記述問題
- WAFの誤検知
- パーミッションのミス
海外アクセスの制限
CORESERVER (コアサーバー) やXSERVER (エックスサーバー) といったホスティング事業者のなかには、海外からのアクセスを拒否するセキュリティ機能を搭載している場合もあります。この機能は国外IPアクセス制限設定とも呼ばれます。
この機能は、海外のIPアドレスでのアクセスはブロックし403エラーを返すというものです。場合によっては国内のIPアドレスにおいても403エラーが返される場合もあります。この要因である場合には、ホスティング事業者に問い合わせると解決が早いでしょう。
functions.phpの問題
functions.phpとはWordPressテーマにおいてよく使われるコードを記述しておくファイルです。具体的には管理画面の見た目を変更したりショートコードの実装をしたりします。
このようにテーマのみでなく管理画面の設定なども可能なため、ファイルを破損させるなどしてしまうとWordPress全体に影響を及ぼしてしまいます。編集する際は必ずバックアップをとりましょう。
このfunctions.phpファイルに何らかの異常がある場合に、403エラーが発生することがあります。
サーバーの凍結
サーバーがホスティング事業者により凍結させられている場合もあります。これはサーバーの利用料金を支払っていなかった場合などに発生します。
サーバーの凍結が原因で403エラーが返される場合には、各サーバーの管理画面から確認できる場合が多いです。一度サーバー管理画面を確認してみましょう。
もし凍結されていた場合には、サーバー料金の支払いが確認でき次第、凍結解除されることが基本です。料金未払いが原因でない場合や、凍結解除の要件についてはご利用のホスティング事業者にお問い合わせください。
.htaccess (ドット・エイチ・ティ・アクセス) の記述問題
.htaccessファイルが異常である場合には403エラーが返されることがあります。そもそも”.htaccess”ファイルというのはApache (アパッチ) というWebサーバーで使える設定ファイルです。
具体的には以下のようなことが”.htaccess”ファイルにて可能です。
- アクセス制限設定
- ユーザー認証機能を設定
- エラー表示のカスタマイズ
しかし実務上は各種設定を行うときに、”.htaccess”ファイルの使用は避けるべきだといわれています。知識に自信がない場合はあまりいじらないほうが良いでしょう。
具体的に”.htaccess”ファイルのどのような場合に403エラーとなるのかというと、WordPressの”パーマリンク設定”を行った際に、”.htaccess”ファイルが書き換えられてエラーが発生する場合があります。
WAF (ウェブ・アプリケーション・ファイアウォール) の誤検知
WAFというのはWebサイトのセキュリティ機能を指しており、このWAFがWordPressでの通常操作を誤検知してしまい403エラーが出ることがあります。特にレンタルサーバーサービス”ロリポップ”を利用している環境下で発生することがあるようです。
この場合の対処法はサーバーの管理画面などからWAFを無効化します。詳細の方法については各ホスティング事業者によって異なるため、ご利用のホスティング事業者へ問い合わてみてください。
パーミッションのミス
パーミッションとはファイルなどに対するアクセス制限のことです。パーミッションを適切に設定することでダウンロードされては困るファイルなどを保護できます。具体的には3桁の数字で設定されており、それぞれ以下の権限レベルに分けられます。
*Read 4–読み込みを許可 *Write 2–書込みを許可 *eXecute 1–実行を許可
“403エラー”はアクセス権がないために発生することは先述のとおりです。つまりパーミッションのミスは403エラーの直接的な要因となりえます。
パーミッションのミスは”FTP (ファイル・トランスファ・プロトコル)”ソフトで確認できます。詳しくは”ファイルパーミッションの変更|WordPress.ORG”や、ご利用のホスティング事業者が提供するマニュアルなどを参照ください。
WordPress (ワードプレス) の403エラーの解決方法
以降ではWordPressにおける403エラーの解決方法7つを、順に解説します。
プラグインのバグを探る
WordPressのプラグイン (拡張機能) は便利であり、WordPressでWebサイトを運営するのであれば必要不可欠のものです。しかしこのプラグインが403エラーの要因となる場合もあります。具体的にはプラグイン自体のバグ、プラグインの互換性によるバグが考えられます。
このような場合にはプラグインを一度無効にしてみましょう。最も手軽にプラグインを無効にする方法はWordPressの管理画面より”プラグイン”、”一括操作”、”無効化”、”適用”の順に選択することです。
もしWordPressの管理画面にログインできない場合は”FTPソフト”を用いる方法もあります。以下の画像のようにFTPソフトでWebサーバーにアクセスした後、”wp-content”フォルダにある”plugins”を右クリックし名前変更 (リネーム) を行いましょう。
こうすることにより、プラグインが格納されているフォルダ名である”plugins”を読み込めないため無効化できます。
この時点で403エラーが改善したのであれば、プラグインを1つずつ有効にすることで問題となるプラグインを発見できるでしょう。もしプラグインをすべて無効化したのにもかかわらずエラーが改善しないようであれば、エラーはプラグインが原因ではありません。
.htaccess (ドット・エイチ・ティ・アクセス) ファイルを設定する
“.htaccess”ファイルが問題になる場合は、”変更”するよりも”消去”からの”新規作成”を推奨します。なぜなら”.htaccess”ファイルは効力の強いファイルのためです。消去する前にコピーをデスクトップなどのローカル環境に保存しておきます。
コピーを保存したら”FTPソフト”で該当ファイルを削除し、エラーが取り除かれるかどうかを確認します。ここでエラーが取り除かれなかった場合は”.htaccess”ファイルが原因ではありません。エラーが取り除かれた場合は”.htaccess”ファイルを新規作成する必要があります。
“.htaccess”ファイルの新規作成には、以下画像のようにWordPress管理画面の”設定”から”パーマリンク設定”を選択し、”変更を保存”を選択します。
これで新しい”.htaccess”ファイルが新規作成されます。
CDN (コンテンツ配信ネットワーク) を一時的に無効化
CDNはコンテンツ配信ネットワークの略称で、画像やCSS、JavaScriptなどのコンテンツを配信するネットワークです。具体的には”複数のサーバーからユーザーに最も近い場所にあるサーバーを選択してコンテンツを供給 (ダウンロード) する”ものです。
これによりアクセスしたユーザーは、物理的に近いサーバーからデータをダウンロードできるため、遅延が少なくなります。
例えばヨーロッパに住んでいる人が日本のWebサーバーを見るためには、ヨーロッパと日本という遠い距離のネットワークを介してコンテンツを受信しなければなりません。しかしCDNの仕組みでは複数の配信サーバーがあるため、最も遅延の少ない配信サーバーを介して受信でき、遅延を減らすことが可能です。
このようにCDNを活用すればWebサイトのスピードを改善したり負荷分散できたりします。さらにはセキュリティ向上に寄与する場合もあります。
しかしCDNが原因で403エラーが発生する場合もありますので、その場合はCDNを一時的に無効化しましょう。実際に無効化する方法は、お使いのCDNサービス提供元からご確認ください。
ホットリンク保護の設定を確認
ホットリンクとはファイルリーチングやリモートリンクなどとも呼ばれ、”別ドメインの画像などへのリンク”のことを指します。”ホットリンク保護”は別ドメインの画像などへのリンクを防ぐための機能です。他人に無断でコンテンツを使用されないための保護として活用されています。
この機能が有効である場合、403エラーが発生するのは正常ですが、意図しない場合にも403エラーが発生する場合もあります。この場合はホットリンク保護の設定を確認し、許可しているドメイン (サイト) や保護しているコンテンツに間違いがないかを確認します。
WAF (ウェブ・アプリケーション・ファイアウォール) を無効化
WAFの誤検出により403エラーが発生している場合は、WAFを無効化しましょう。WAFといってもソフトウェア型やクラウド型など多数の形態がありますが、最近ではホスティング事業者がWAF機能を提供している場合も多くあります。
以下の画像はホスティング事業者の1つである”XSERVER (エックスサーバー)” の例を示しています。
お使いのWAFサービスによって無効化の方法が異なるため、詳しくはサービス提供元からご確認ください。
SiteGuard (サイトガード) でWAFの除外設定
“SiteGuard”はWordPressのセキュリティ対策機能を持つプラグインです。このプラグインを使ってWAFを無効化することもできます。
具体的には以下の手順を踏みます。お使いの環境によって多少の差が生じることはあらかじめご承知ください。
- 1Webサーバー管理画面にて”WAF設定”などのページでログを確認する
- 2エラー発生時の検出シグネチャをコピー
- 3WordPress管理画面で”SiteGuard”の”WAFチューニングサポート”へ進む
- 4”新しいルールを追加”より”WAF除外ルール”のシグネチャに、先ほどコピーしたシグネチャを貼り付け保存する
- 5”WAFチューニングサポート”をONにして”ルール適用”を選択する
文中の”シグネチャ”とは悪意のあるプログラムを検知するために作成されたコードの一部を指します。つまり一連の操作で”SiteGuard”プラグインをすることによって、WAFが検出するエラーを一部除外しています。
パーミッションを変更する
403エラーの原因でも解説しましたが、Webサーバーのファイルに関するアクセス権 (パーミッション) が誤って変更されている場合は403エラーが発生する要因となります。ここでは実際にどのように解決すれば良いのかを解説していきましょう。
ある程度問題となるファイルやフォルダに見当がついている場合には、パーミッションの確認を行い、パーミッションを変更します。もし見当がついていない場合には、ファイルは”644”または”640”、ディレクトリ (フォルダ) は”755”または”750”の適用を推奨されています。”wp-config.php”ファイルには”440”または”400”を適用しましょう。
参考:ファイルパーミッションの変更|WordPress.ORG
- 1”FTPソフト”でWebサーバーに接続する
- 2パーミッションを確認したいフォルダ、またはファイルを右クリックし、パーミッションを確認・修正する
画像は”FTPソフト”である”FFFTP”での画面キャプチャーです。”FFFTP”の場合は右クリック後、”属性変更”にてパーミッションの変更ができます。
参考としてここで紹介したパーミッションの属性値の意味を簡潔に記しておきます。
属性 | オーナー | グループ | その他 |
400 | 読取り可能 | 権限なし | 権限なし |
440 | 読取り可能 | 読取り可能 | 権限なし |
640 | 読取り可能/書込み可能 | 読取り可能 | 権限なし |
644 | 読取り可能/書込み可能 | 読取り可能 | 読取り可能 |
750 | 読取り可能/書込み可能/実行可能 | 読取り可能/実行可能 | 権限なし |
755 | 読取り可能/書込み可能/実行可能 | 読取り可能/実行可能 | 読取り可能/実行可能 |
WordPress (ワードプレス) の403エラーまとめ
WordPressにおいて”403 Forbiddenエラー”が発生する原因と解決方法を網羅的に解説してきました。”403 Forbiddenエラー”は今まで正常にアクセスできていた重要なページがアクセスできなくなるなど、非常に困るエラーです。
ぜひ本記事で紹介した原因と解決方法を参考にトラブルシューティングを行ってみてください。それでもなお問題が解決しない場合には、お使いのホスティングサービスの提供者、またはセキュリティサービスの提供者に確認することを推奨します。