Ошибка 403 (доступ запрещен) при обновлении файла .htaccess

Ошибка 403 (доступ запрещен) при обновлении файла .htaccess

Я использую плагин для одного из моих сайтов, который я недавно обновил. С тех пор, как я обновился, я всегда получаю сообщение об отказе в доступе (Ошибка 403) при открытии magnalister.php плагина. Когда я заменяю новый файл .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 2.2 в другом месте конфигурации Apache, и это имеет приоритет.

Все директивы, которые вы разместили, толькопозволятьдоступ, поэтомучто-то другоев вашей конфигурации запрещен доступ к этому файлу.

Вы обновили свою .htaccessконфигурацию для работы с модулями mod_authz_core/host Apache 2.4. Однако, если в Apache 2.4 другая часть вашей конфигурации все еще использует старые Denyдирективы (часть mod_access_compact в Apache 2.4 и mod_authz_host в Apache 2.2), то эти «старые» директивы будут иметь приоритет над «новыми» директивами Apache 2.4 в .htaccess, несмотря на видимый порядок в вашей конфигурации, и доступ по-прежнему будет запрещен.

Как отмечено вДокументация Apache обновляется с 2.2 до 2.4:

...смешивание старых и новых директив [может] привести к неожиданным результатам. ... Поскольку директивы mod_access_compat имеют приоритет над mod_authz_host ...

Таким образом, если вы все еще используете «старые» директивы где-либо в своей конфигурации (для запрета доступа), то их необходимо обновить, чтобы использовать эквивалентные директивы Apache 2.4.

Это подтверждается ошибкой, которую вы видите и которая вызвана mod_access_compact, а не mod_authz_core, как можно было бы ожидать в Apache 2.4.

[Ср Сен 12 00:25:05 2018] [access_compat:ошибка] [pid 7437] [клиент ...] [хост ...] AH01797: клиент отклонен конфигурацией сервера: /is/htdocs/.../www/testshop3/plugins/magnalister/magnalister.php

(В стороне:Вы говорите, что используете Apache 2.4. Вам действительно нужно поддерживать обратную совместимость с Apache 2.2, как вы это делаете в .htaccess? Поддерживать обе конфигурации будет только сложнее и более подвержено ошибкам.)

Связанный контент