更新された .htaccess ファイルでエラー 403 (アクセス拒否) が発生する

更新された .htaccess ファイルでエラー 403 (アクセス拒否) が発生する

私は最近更新したウェブサイトの 1 つにプラグインを使用しています。更新してから、プラグインの magnalister.php を開くと、常にアクセス拒否メッセージ (エラー 403) が表示されます。新しい .htaccess ファイルを古いファイルに置き換えると、問題は発生しません。ファイルの内容は次のとおりです。

更新する前に:

<Files magnalister.php>
    Order Deny,Allow
    Allow from all
</Files>

<Files magnaCallback.php>
    Order Deny,Allow
    Allow from all
</Files>

更新後:

<Files magnalister.php>
    <IfModule !mod_authz_core.c>
        Order Deny,Allow
        Allow from all
    </IfModule>
    <IfModule mod_authz_core.c>
        Require all granted
    </IfModule>
</Files>
<Files magnaCallback.php>
    <IfModule !mod_authz_core.c>
        Order Deny,Allow
        Allow from all
    </IfModule>
    <IfModule mod_authz_core.c>
        Require all granted
    </IfModule>
</Files>

PHP エラー ログには次の内容が表示されます。

[Wed Sep 12 00:25:05 2018] [access_compat:error] [pid 7437] [client ***] [host ***] AH01797: client denied by server configuration: /is/htdocs/***/www/testshop3/plugins/magnalister/magnalister.php

Apache/2.4.10 を使用しています。

更新バージョンで 403 エラーが発生する理由は何ですか?

答え1

どこにいるの否定するアクセスですか? それが問題のようです。Apache 設定の別の場所で「古い」Apache 2.2 ディレクティブを使用してアクセスを拒否し続けており、これが優先されているのではないかと思います。

あなたが投稿したすべての指示は許可するアクセスなのでその他設定により、そのファイルへのアクセスが拒否されます。

.htaccessApache 2.4 の mod_authz_core/host モジュールで動作するように設定を更新しました。ただし、Apache 2.4 では、設定の別の部分で古いDenyディレクティブ (Apache 2.4 の mod_access_compact の一部と Apache 2.2 の mod_authz_host) がまだ使用されている場合、設定内の順序にかかわらず、これらの「古い」ディレクティブが「新しい」Apache 2.4 ディレクティブよりも優先され.htaccess、アクセスは拒否されます。

前述の通り、Apache 2.2 から 2.4 へのアップグレードに関するドキュメント:

...古いディレクティブと新しいディレクティブを混在させると、予期しない結果が生じる可能性があります。...mod_access_compat ディレクティブは mod_authz_host よりも優先されるため...

したがって、設定内の他の場所で「古い」ディレクティブをまだ使用している場合 (アクセスを拒否するため)、これらを更新して、同等の Apache 2.4 ディレクティブを使用する必要があります。

これは、表示されているエラーによって確認されているようです。このエラーは、Apache 2.4 で予想される mod_authz_core ではなく、mod_access_compact によってトリガーされています。

[2018年9月12日水曜日00:25:05] [アクセス互換性:エラー] [pid 7437] [クライアント...] [ホスト...] AH01797: サーバー構成によりクライアントが拒否されました: /is/htdocs/.../www/testshop3/plugins/magnalister/magnalister.php

余談:Apache 2.4 を使用しているとのことですが、 で行っているように、Apache 2.2 との下位互換性を本当に維持する必要がありますか.htaccess? 両方の構成を維持すると、維持が難しくなり、エラーが発生しやすくなります。

関連情報