WordPressサイトにアクセスしたら、「Forbidden」の文字、またはアクセス権限がない旨を伝えるエラーメッセージが表示された、という経験はありませんか?

こんなエラーが突然表示されたら、面倒に感じるもの。そんな時に備えて、この記事では、この403エラーを素早く解決して、すぐにサイトを正常に稼働する方法をご紹介します。

それでは、早速本題に入りましょう!

403エラーの解決方法について動画での解説もご用意しています。

「HTTP 403 Forbidden」エラーとは

IETF(Internet Engineering Task Force)は、403エラーを以下のように定義しています。

403(Forbidden)ステータスコードは、サーバーがリクエストを処理したが、承認を拒否したことを示す。リクエストが拒否された理由があり、それを表示したい場合は、レスポンスペイロード(受信データ)に記述可能。

エラーコード 403
エラーの種類 認証エラー
バリエーション Forbidden─You don’t have permission to access / on this server

403─Forbidden: Access is denied

Error 403─Forbidden

403─Forbidden Error─ You are not allowed to access this address

403 Forbidden─nginx

HTTP Error 403─Forbidden─ You do not have permission to access the document or program you requested

403 Forbidden─Access to this resource on the server is denied

403─That’s an error. Your client does not have permission to get URL / from this server

You are not authorized to view this page

It appears you don’t have permission to access this page

エラーの原因 .htaccessファイルが破損している

ファイルのアクセス権限に誤りがある

プラグインに問題がある

その他の一般的なWordPressエラー同様、「HTTP 403 Forbidden」エラーは、ウェブサーバーがブラウザとの通信に使用するHTTPステータスコードの1つです。

Chromeの「HTTP 403 Forbidden」エラー
Chromeの「HTTP 403 Forbidden」エラー

HTTPステータスコードとは、簡単にご説明すると、ブラウザでサイトに接続すると、ウェブサーバーがHTTPヘッダーで応答します。すべてが正常に動作している場合、このようなやりとりは裏で行われます(ステータスコード200)。

しかし、何か問題が発生した場合には、サーバーが別の番号のHTTPステータスコードを返します。この番号は非常に重要で、サイトで何が問題になっているかを突き止める手がかりになります。

「HTTP 403 Forbidden」エラーは、サーバーがクライアント(ブラウザ)のリクエストを処理したものの、それに応じないことを意味します。

わかりやすく言えば、サーバーは自分がしたいことを正確に理解しているが、何らかの理由でそれを行う権限がなく、それを許可することができないこと。招待制のイベントに参加しようとしたら、何らかの理由で招待客のリストから名前が消されてしまったようなものです。

HTTPステータスコードには、さまざまな種類があります。例えば、「404 Not Found」「500 Internal Server」「502 Bad Gateway」「504 Gateway Timeout」など。それぞれの解決方法は各記事をご覧ください。

WordPressサイトの403エラーの原因

WordPressサイトでの403エラーの原因としては、以下の2つが考えられます。

  1. .htaccessファイルが破損している
  2. ファイルのアクセス権限に誤りがある

または、サイトで使用しているプラグインに不具合があり、このエラーを引き起こしている可能性もあります。後ほど、原因別の解決方法を詳しくご紹介していきます。

403エラーの種類

他のHTTPステータスコードと同様、このエラーの表示方法にはさまざまな種類があります。

一般的なものには、以下が挙げられます。

  • Forbidden─You don’t have permission to access / on this server(このサーバーの…にアクセスする権限がありません)
  • 403─Forbidden: Access is denied(アクセスが拒否されました)
  • Error 403─Forbidden
  • 403─Forbidden Error─このアドレスへのアクセスは許可されていません。
  • 403 Forbidden─nginx
  • HTTP Error 403─Forbidden─ You do not have permission to access the document or program you requested(要求されたドキュメントまたはプログラムのアクセス権限がありません)
  • 403 Forbidden─Access to this resource on the server is denied(サーバー上のこのリソースへのアクセスは拒否されました)
  • 403─That’s an error. Your client does not have permission to get URL / from this server(これはエラーです。このクライアントには、このサーバーからURL /…を取得する権限がありません)
  • You are not authorized to view this page(このページを閲覧する権限がありません)
  • It appears you don’t have permission to access this page(このページへのアクセス権限がないようです)

NNginxサーバーを使用している場合は、以下のように表示されます。「Forbidden」または「not allowed to access」という表現があれば、ほぼ間違いなく403エラーを意味しています。

Kinstaでの403エラーの表示例
Kinstaでの403エラーの表示例

WordPressサイトで403エラーを解決する方法

それでは、WordPressサイトの「HTTP 403 Forbidden」エラーを解決する方法を、以下5つのステップで見ていきます。

1. ファイルのアクセス権限を変更する

WordPressサイトのサーバー上の各フォルダとファイルには、アクセスできるユーザーを制御する独自のアクセス権限が設定されています。

  • 読み込み権限─ファイル/フォルダのデータを閲覧する
  • 書き込み権限─ファイルを変更する、またはフォルダ内のファイルを追加・削除する
  • 実行権限─ファイル/スクリプトの実行、フォルダの関数やコマンドを実行

権限は3桁の数字で示され、各桁が上記3つの権限レベルを定義します。

通常、この権限は、設定通りにWordPressサイトで機能するはずですが、WordPressサイトのファイルのアクセス権限に何らかの問題が発生すると、403エラーを引き起こすことがあります。

このアクセス権限を表示・変更するには、FTP/SFTPでサイトに接続します。Kinstaのホスティングサービスをご利用の場合はこちらをご覧ください。

今回は、例として無料のFileZillaを使った手順を見ていきます。インターフェースはFTPソフトによって異なりますが、基本的な手順は同じです。

サーバーに接続したら、ファイルやフォルダを右クリックしてアクセス権限を確認します。

FileZillaでファイルのアクセス権限を表示
FileZillaでファイルのアクセス権限を表示

とは言え、このように各ファイルやフォルダのアクセス権限をいちいち手動で確認する必要はありません。フォルダ内のすべてのファイル、またはフォルダにファイルのアクセス権限を自動的に適用することができるのでご安心を。

WordPress Codexによると、WordPressサイトにおける理想的なファイルのアクセス権限は以下のようになっています。

  • ファイル─644または640
  • ディレクトリ─755または750

例外として、wp-config.phpファイルは、440または400に設定してください。

アクセス権限を変更するには、WordPressサイトが含まれるフォルダ(public)を右クリックして、「ファイルの属性」を選択します。

FileZillaでファイルのアクセス権限を一括変更
FileZillaでファイルのアクセス権限を一括変更

数値」フィールドに755または750を入力し、「サブディレクトリの中の再帰」にチェックを入れて、「ディレクトリのみに適用」を選択します。

WordPressディレクトリのファイルのアクセス権限
WordPressディレクトリのファイルのアクセス権限

ディレクトリに正しいアクセス権限を適用したら、ファイルについても同じ手順を繰り返します。

  • 数値」フィールドに644または640を入力
  • サブディレクトリの中の再帰」を選択
  • ファイルのみに適用」を選択
WordPressファイルのアクセス権限
WordPressファイルのアクセス権限

最後に、wp-config.phpファイルのアクセス権限を440、または400に設定すれば完了です。

wp-config.phpファイルのアクセス権限
wp-config.phpファイルのアクセス権限

ファイルのアクセス権限の設定が原因で、403エラーが発生していた場合は、これでエラーが解消されるはずです。

2. .htaccessファイルを削除して復元する

KinstaではNgnixサーバーを使用しており、.htaccessファイルがないため、Kinstaをご利用の方は次の手順に進んでください。

Kinsta以外でサイトを運営していて、Apacheサーバーを使用している場合は、次にこのトラブルシューティングを実行します。

.htaccessファイルは、Apacheサーバーで使用される基本設定ファイルです。リダイレクトの設定、サイトのすべてまたは一部へのアクセス権限を設定するのに使用することができます。

このファイルは非常に強力であることから、ちょっとした設定の誤りが403エラーにつながることも。

.htaccessファイル自体のトラブルシューティングを行うよりも、WordPressサイトに.htaccessファイルを再生成するほうが効率的です。

この手順は、以下の通り。

  • FTPでサーバーに接続する
  • ルートフォルダで.htaccessファイルを見つける
  • ファイルのコピーをコンピュータにダウンロードする(念のためバックアップを作成しておきましょう)
  • ローカルコンピュータにバックアップを作成した後、サーバーから.htaccessファイルを削除する
.htaccessファイルを削除
.htaccessファイルを削除

.htaccessファイルが原因になっていた場合は、これでエラーが消えるはずです。

WordPressサイトに.htaccessファイルを再生成するには、以下の手順に従ってください。

  • WordPressの管理画面で「設定」>「パーマリンク設定」に移動する
  • ページの一番下にある「変更を保存」をクリックする(設定の変更は不要)

    .htaccessファイルを再生成
    .htaccessファイルを再生成

これで、新規.htaccessファイルが生成されます。

3. プラグインを一度無効化してから再度有効にする

サイトファイルのアクセス権限や.htaccessファイルに問題がない場合は、次にプラグインを調べましょう。プラグインのバグか、互換性の問題に起因しているかもしれません。

いずれにしても、問題のあるプラグインを特定するには、すべてのプラグインを無効化し、原因が見つかるまで1つずつ有効にしていく方法が最も簡単です。

WordPressの管理画面にアクセスできる場合は、「プラグイン」画面からこの作業を行いましょう。

WordPressの管理画面にアクセスできない場合は、FTP/SFTPでWordPressサイトのサーバーに接続してください(KinstaでSFTP接続を行う方法はこちらをご覧ください)。

FTPでサーバーに接続する方法は、以下の通り。

  1. wp-contentフォルダを参照する
  2. wp-contentフォルダの中にあるpluginsフォルダを見つける
  3. pluginsフォルダを右クリックして「名前の変更」を選択する
  4. フォルダ名を変更する(「plugins-disabled」のようなわかりやすい名前がお勧め)
pluginsフォルダの名前を変更
pluginsフォルダの名前を変更

すると、サイトのすべてのプラグインを無効化することができます。

ここで、エラーが発生したサイトに再度アクセスしてみてください。エラーが解決している場合には、プラグインに原因があります。

この場合は、問題のあるプラグインを特定するために、1つずつプラグインを有効化していきましょう。

pluginsフォルダの名前を変更した後、サイトの「プラグイン」画面に移動すると、「プラグインファイルが存在しません」とうエラーが表示されるはずです。

pluginsフォルダの名前を変更するとこのようなエラーメッセージが
pluginsフォルダの名前を変更するとこのようなエラーメッセージが

これを解決して、プラグインの管理を行うには、FTPソフトを使用してフォルダ名をpluginsに戻します。つまり、先ほど変更した「plugins-disabled」を「plugins」に戻すだけでOKです。

すると、すべてのプラグインが一覧表示されます。ただし、すべて無効化された状態です。

プラグインを1つずつ有効化する
プラグインを1つずつ有効化する

各プラグイン名の下にある「有効化」をクリックして、1つずつ有効化していきます。

原因となっているプラグインを見つけたら、プラグイン開発者に問い合わせるか、代替のプラグインを見つけて使用するようにしてください(おすすめのWordPressプラグインはこちら)。

4. CDNを一時的に無効にする

画像、JavaScript、CSSなどのアセットで403エラーが発生する場合は、コンテンツデリバリネットワーク(CDN)に不具合がある可能性も。この場合は、一時的にCDNを無効にして、エラーが解決できるかを確認してみてください。Kinstaのお客様の場合は、MyKinstaにログインしてサイトを選択したら、「CDN」画面に移動し、「無効化する」ボタンをクリックしてください。

KinstaのCDNを無効化する
KinstaのCDNを無効化する

直リンクとは、あるサイトの画像をそのサイトのURLを使用して別のサイトに転載することを言います。このようなことを防ぐために、一部WordPressサーバーやCDNサービスでは直リンクが禁止されています。

このような設定がある場合、403エラーが返されるのは正常です。しかし、本来発生すべきでないところで、403エラーが表示される場合は、直リンク禁止の設定が正しく行われているかどうかを確認してください。

それでも解決しなければ、サーバーに連絡を

上記トラブルシューティングを実行しても、まだエラーが解決されない場合は、ご利用のサーバーに直接問い合わせてみてください。問題の特定と解決をサポートしてくれるはずです。Kinstaをご利用の場合は、Kinstaのカスタマーサポートまでチャットにてご連絡ください。年中無休いつでもご対応いたします。

まとめ

「HTTP 403 Forbidden」エラーは、サーバーでリクエストが処理されるものの、何らかの理由でサイトのすべてまたは一部にアクセスする権限がないことを意味します。

このエラーの原因は、WordPressサイトのファイルのアクセス権限、または.htaccessファイルに問題がある可能性が高いです。または、プラグインの不具合が原因になっているかもしれません。あるいは、直リンク禁止、またはCDNの設定に誤りがあることも。

今回ご紹介したトラブルシューティングを行うことで、サイトをすぐに正常に戻すことができるはずです。

Brian Jackson

Brianの最大の情熱の一つは10年以上使用してきたWordPressです。複数のプレミアムプラグインさえ開発しています。Brianの趣味はブログや映画やハイキングなどです。TwitterでBrianとつながりましょう。