Так что в .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
)