Apache 2.4 блокирует запросы без пользовательского агента

#apache #mod-rewrite #user-agent

#apache #переписать мод #пользовательский агент

Вопрос:

Моя цель — просто блокировать запросы, для которых не установлен заголовок User-Agent. Из документов Apache это должно быть очень просто. То, что я пытался использовать (в разделе VirtualHost), заключается в следующем:

 RewriteEngine on
RewriteCond ${HTTP_USER_AGENT} ^$    
RewriteRule .* - [F]
 

Я тестирую это, curl используя следующее (с измененным именем домена):

curl -v --http1.1 https://example.com/ > /dev/null

и заголовки, отправленные для этого:

 > GET / HTTP/1.1
> Host: example.com
> User-Agent: curl/7.68.0
> Accept: */*
 

curl -v --http1.1 --user-agent "" https://example.com/ > /dev/null

в то время как заголовки, отправленные для этого:

 > GET / HTTP/1.1
> Host: example.com
> Accept: */*
 

Я вижу именно то, что я хочу видеть отправленным в обоих случаях.

Что бы я ни делал, Apache просто с радостью возвращает 200 для обоих. Чего мне здесь не хватает?

Ответ №1:

Вы почти на месте, переменные сервера Apache имеют префикс a % , а не $ :

 RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^$    
RewriteRule .* - [F]