RewriteRule [F, L] показывает 500 в Apache log вместо 403 - PullRequest
0 голосов
/ 04 августа 2020

Я блокирую плохих ботов в моем файле htaccess. Проверяя заголовки, я правильно вижу возвращенный 403, но в моих журналах доступа я вижу 500 вместо 403:

x.x.x.x - - [04/Aug/2020:10:56:02 -0600] "GET /testurl HTTP/1.1" 500 - "" "Yeti/1.0 (NHN Corp.; http://help.naver.com/robots/)"

Далее, в Apache журнале ошибок я вижу:

[Tue Aug 04 10:56:02.896243 2020] [core:error] [pid 10430:tid 47402182534912] [client x.x.x.x:35589] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

Пример части моего файла htaccess:

RewriteCond %{HTTP_USER_AGENT} ^.*(bot1|bot2).*$ [NC,OR]
...
RewriteRule ^(.*)$ - [F,L]

Эти правила обрабатываются в первую очередь до канонизации или перенаправления https. Я не понимаю, почему это приводит к «10 внутренним перенаправлениям» в журнале ошибок.

Заранее спасибо.

1 Ответ

0 голосов
/ 04 августа 2020

Я нашел проблему. Плохая перезапись бота перенаправляла на мою страницу 403, но, поскольку ВСЕ файлы были включены в правило перезаписи, это включало страницу 403. В начало списка ботов RewriteCond я включил следующее, что решило проблему.

RewriteCond %{REQUEST_URI} !^/my-403-page\.html$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...