Многие безуспешно пытались сравнивать серверные переменные Apache из TestString в правой части условия CondPattern директивы RewriteCond, а некоторые упорные, несмотря на постоянные "фэйлы", продолжают пытаться это делать и по сей день.
Apache 2.0-2.2 и переменные в условиях RewriteCond
Проблема в том, что CondPattern не расшаривает переменные %{VAR} доступные в TestString, а также $N или %N обратные ссылки на группы из CondPattern предыдущих RewriteCond - ну, не предусмотрено документацией и всё тут!
CondPattern же является perl-совместимым регулярным выражением с небольшим дополнением, а потому на примере проверки "реферера" следующие условия работать не будут:
RewriteCond %{HTTP_REFERER} !^https?://%{HTTP_HOST}/*
RewriteRule "^/images" "-" [F]
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteCond %{HTTP_REFERER} !^https?://%1/*
RewriteRule "^/images" "-" [F]Делаем ход костылём
В строку TestString одновременно заряжаем значение переменных %{HTTP_HOST} и%{HTTP_REFERER} разделив их условным разделителем, "@@" в нашем случае (может быть и "#" или просто пробел), а в CondPattern сравниваем эту строку целиком предварительно сгруппировав ([^@]*) все символы расположенные до разделителя - там у нас значение %{HTTP_HOST}.
Далее в шаблоне условий через обратную ссылку на группу с индексом №1 ("\1") подставляем содержащееся там значение %{HTTP_HOST}.
RewriteCond %{HTTP_HOST}@@%{HTTP_REFERER} !^([^@]*)@@https?://\1/.*
RewriteRule "^/images" "-" [F]Apache 2.4 и переменные в условиях RewriteCond
В Apache 2.4 и старше появился свой движок для обработки регулярных выражений, и чтобы им воспользоваться нужно в TestString указать специальное значение в виде ключевого слова "expr":
RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"
RewriteRule "^/images" "-" [F]- Expressions in Apache HTTP Server - Apache HTTP Server Version 2.4
- mod_rewrite - Apache HTTP Server Version 2.2

