#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]