403 Запрещенная ошибка при использовании ErrorDocument с директивой Require - PullRequest
0 голосов
/ 09 февраля 2020

Так что в .htaccess в каталоге /home/example/www у меня есть следующее:

ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
<RequireAll>
Require expr %{HTTP:CF-IPCountry} =~ /(US)/i
</RequireAll>

В этом случае доступ разрешен только людям из США. Но теперь проблема в том, что когда кто-то пытается получить доступ к сайту из-за пределов США, он показывает следующее сообщение 403:

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

Теперь мне кажется, что ErrorDocument (403.php) победил ' не может быть загружен, потому что пользователю уже отказано в доступе из-за выражения Require, поэтому при попытке обработать документ возвращается ошибка 403.

Так что я не знаю, как это сделать. «исправить» это, потому что я хочу, чтобы я мог показывать ErrorDocuments независимо от того, откуда пользователь, но я также хочу заблокировать доступ к остальной части сайта.

ps

Может быть можно обслужить ErrorDocuments от root, например /home/example/http_errors/403.php? Дело в том, что я на самом деле уже пробовал это, но он возвращает AH01630: client denied by server configuration: /home/example/www/; AH01630: client denied by server configuration: /home/example/www/home.

У меня также была эта идея обслуживать документы из другого (нового) субдомена. И хотя это работает, кажется немного излишним использование субдомена для этой цели (например, ErrorDocument 403 https://subdomain.example.com/403.php)

...