403 Forbiddenとは―ワードプレス、ロリポップ等のエラー対処/解決方法。
技術情報
403 Forbiddenとは、閲覧禁止を意味するエラーです。ご自身が公開しているホームページであれば閲覧禁止となる原因を確認すれば、解決もしくは回避できます。ここでは403 Forbiddenの解決をテーマに、ワードプレス(WordPress)、ロリポップ(lolipop!)、などのエラー対処方法をまとめています。
目次
この記事の目次です。
1. 403 Forbidden エラーとは
2. Forbiddenの意味と403 Forbidden エラーの意味
3. 403 Forbidden エラーの原因(主なパターン)
4. ワードプレスの403 Forbidden エラーの解決方法(事象、原因、対処法)
ワードプレスで「アクセスしようとしたページは表示できませんでした。」と表示される。
ロリポップでワードプレスのElementorが403 Forbiddenエラーになる
5. その他の403 Forbidden エラーの解決方法(事象、原因、対処法)
利用しているレンタルサーバでCGI/PHPが制限されている
Apacheで403 Forbiddenが表示される原因
1. 403 Forbidden エラーとは
403 Forbidden エラーとは、「閲覧禁止」あるいは「アクセス拒否」を意味するエラーです。
403 Forbiddenの表示例
たとえば、エックスサーバ―では「403 Forbidden アクセスしようとしたページは表示できませんでした。このエラーは、表示するページへのアクセス許可がなかったことを意味します。」と表示されます。
エックスサーバ―の例)403 Forbidden アクセスしようとしたページは表示できませんでした。
たとえば、エックスサーバ―では「403 Forbidden アクセスしようとしたページは表示できませんでした。このエラーは、表示するページへのアクセス許可がなかったことを意味します。」と表示されます。
2. Forbiddenの意味と403 Forbidden エラーの意味
Forbiddenの意味と403 Forbidden エラーの意味についてです。
Forbiddenの意味
Forbiddenは、動詞の「forbid」の過去分詞形あるいは「禁断の、禁制の、禁じられた」という意味の英単語(形容詞)です。
403 Forbiddenは「禁じられたもの」があったという意味のエラー
何らかの原因で、ページをApacheやNginxなどのWeb公開するために利用されるサーバーのソフトウェアがページを見る許可を与えない場合に「403」というステータスコードを設定するルールがあり、 Forbidden(禁じられたという意味)のエラーメッセージを表示したページが使われ、「403 Forbidden エラー」「403 エラー」などといわれます。
HTTPステータスコードとは
HTTPステータスコードは、ApacheやNginxなどのWebサーバが応答の意味を表す3桁の数字のコードです。
3. 403 Forbidden エラーの原因(主なパターン)
403 Forbidden エラーの原因は、いろいろあります。 以下は、ワードプレス(WordPress)やロリポップ(lolipop!)などのレンタルサーバーでよく見かける原因を主なパターンです。
ディレクトリリスティング機能を禁止する設定に反する
index.htmlやindex.phpがない状態で、ディレクトリにディレクトリ名でアクセスした場合に403 Forbidden エラーが表示されます(※最近の主なレンタルサーバでは)。 これは、セキュリティ上の懸念から、ディレクトリ名でアクセスした場合にindex.htmlやindex.phpがないときは、ディレクトリ内のファイル一覧を表示する機能(ディレクトリリスティング)があり、それを禁止する設定をしているためです。
ディレクトリリスティングとは
ディレクトリリスティングは、URLでWebディレクトリを指定したときに、インデックスファイルがない場合にディレクトリのファイル一覧を表示する機能です。 意図せずにディレクトリリスティングを有効にしている場合も多く、それを悪用したサーバー攻撃の手法のことを指す場合もあります。
実行権限のないディレクトリに置かれたCGIへのアクセス
PHPではなく、PerlなどのCGIを利用する場合は、実行権限(パーミッション)を設定しないと実行できないようになっています。 ファイルだけでなく、CGIが置かれているディレクトリにも実行権限を設定する必要があります。
WAFで拒否されるパターンの文字列を含んでアクセス
WAFを設定している場合に「<script>」などのXSS攻撃に使われるパターンなどの文字列を含んだアクセスを行うと拒否されます。
4. ワードプレスの403 Forbidden エラーの解決方法(事象、原因、対処法)
ワードプレス関連の具体的な403 Forbidden エラーの事象とその原因、対処法についてまとめていきます。
ワードプレスで「アクセスしようとしたページは表示できませんでした。」と表示される。
ワードプレスで「アクセスしようとしたページは表示できませんでした。」と表示される場合は起点となるindex.phpが実行できるようになっているかまずは確認しましょう。
サイトアドレス (URL)の位置のディレクトリ階層にindex.phpがない
ワードプレスは管理画面以外はすべてのリクエストをサイトアドレス (URL)の位置にあるindex.phpに集約してそこで振り分けて処理します。 このindex.phpがないとディレクトリアクセスになって、多くのサーバでは禁止されたディレクトリアクセスは禁止されているため、 403 Forbiddenエラーとなり「アクセスしようとしたページは表示できませんでした。」と表示されます。
まずはサイトアドレス (URL)の位置のディレクトリ階層にindex.phpがあるか確認しましょう。
パーマリンク設定時にサイトアドレス (URL)の位置のディレクトリ階層に.htaccessがない
ワードプレスは管理画面以外はすべてのリクエストをサイトアドレス (URL)の位置にあるindex.phpに集約してそこで振り分けて処理します。 このindex.phpにアクセスを集約するのは同階層にある.htaccessです。.htaccessがないとindex.php以外のURLはindex.phpに到達しなくなります。 パーマリンク設定時はindex.php?p=xxxのようなindex.phpを使用しないURLになりますのでトップページ以外は到達しなくなります。 そうするとワードプレスの場合多くは.htmlなどの拡張子のあるファイルのURLではなく/で終わるURLとなりますので、ディレクトリアクセスになって、禁止されたディレクトリアクセスになり、 403 Forbiddenエラーとなり「アクセスしようとしたページは表示できませんでした。」と表示されます。
サイトアドレス (URL)の位置に.htaccessがあるか確認しましょう。
パーマリンク設定時にサイトアドレス (URL)の位置のディレクトリ階層に.htaccessの出力が消失している
パーマリンク設定時にワードプレスがサイトアドレス (URL)の位置のディレクトリ階層に.htaccessに書き込みが行えないなどして、 本来出力されている.htaccessの記述がなくなっている場合も403 Forbiddenエラーとなり「アクセスしようとしたページは表示できませんでした。」と表示されます。
サイトアドレス (URL)の位置の.htaccessに「# BEGIN WordPress」から始まる出力があるか確認しましょう。 出力がない場合は.htaccessのアクセス権がプログラムから書き込みが行える状態になっているか確認しましょう。
なお、手動で例えば以下のようなワードプレスが出力する記述を追記することで復旧することもできます。 ※RewriteBase、RewriteRuleのところは構成により異なる場合があります。
# BEGIN WordPress # "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は # 動的に生成され、WordPress フィルターによってのみ修正が可能です。 # これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
ロリポップでワードプレスのElementorが403 Forbiddenエラーになる
ロリポップでWAFを利用している場合にワードプレス(WordPress)のプラグインのElementorを使うと403 Forbiddenエラーとなる場合があります。
解決案1)ロリポップのWAFを無効にする対処方法
ロリポップにログインして、「セキュリティ>WAF設定」から、該当のサーバーの「設定変更」の「無効にする」を選択して「無効」に設定します。
解決案2)ロリポップのWAFの抽出されたシグネチャを.htaccessで除外する対処法
ロリポップにログインし「セキュリティ>WAF設定」の対象ドメインのログ参照にて、抽出されたシグネチャを確認し、以下のように除外する記述を.htaccessに記述します。
SiteGuard_User_ExcludeSig <シグネチャ名>
5. その他の403 Forbidden エラーの解決方法(事象、原因、対処法)
ワードプレス以外のその他の具体的な403 Forbidden エラーの事象とその原因、対処法についてまとめていきます。
利用しているレンタルサーバでCGI/PHPが制限されている
たとえば、GMOクラウド レンタルサーバーのiCLUSTA+の一般ユーザー(個別ユーザー)の領域など、CGI/PHPの利用が制限されている場合に、CGI/PHPのコンテンツをアップしてアクセスすると403 Forbiddenエラーとなる場合があります。
解決案)CGI/PHPが実行できるユーザー、プランを確認する
レンタルサーバーの仕様を確認して、CGI/PHPが実行できる領域/プランに変更して、CGI/PHPのコンテンツを公開します。
Apacheで403 Forbiddenが表示される原因
Apacheで403 Forbiddenが表示される原因をいくつかあげてみました。
- SELinuxの設定が適切でない
- Directoryディレクティブに設定したパスが正しくない
- Apacheの設定が反映されていない
- ファイルに読み取り権限がない
- ディレクトリの権限に実行権がない
更新履歴
更新履歴になります。
- 2023/8/12 ワードプレスの403 Forbidden エラーの解決方法について追記しました。
- 2022/9/13 Forbiddenの意味について追記しました。
- 2022/7/17 Apacheで403 Forbiddenが表示される原因について追記しました。
- 2022/3/6 エックスサーバ―の例について追記しました。
- 2021/11/28 HTTPステータスコードについて追記しました。
- 2021/8/4 CGI/PHPが制限されている場合の解決方法の例を追記しました。
- 2020/6/18 記事をアップしました。