Não importa o que você faça, você estará "desperdiçando" ciclos de CPU (para determinar se o site de referência (aquele que faz a vinculação) está autorizado ou não, você deve fazer algum processamento dos dados da solicitação). A única coisa que você pode fazer é economizar largura de banda enquanto desperdiça um mínimo de ciclos de CPU.
Existem alguns exemplos no Apache Docs que fazem exatamente o que você deseja. Este aqui:
SetEnvIf Referer example\.com localreferer
<FilesMatch \.(jpg|png|gif)$>
Order deny,allow
Deny from all
Allow from env=localreferer
</FilesMatch>
parece ser o mais aplicável (e não requer o peso total de mod_rewrite).
Você pode adicionar referenciadores válidos adicionais com as diretivas adicionais SetEnvIf
e Allow
.