uhm, potresti bloccare i download "diretti" ai file, con .htaccess.
Però a questo punto, nessuno potrà effettuare il download dei tuoi file. (nemmeno dai tuoi link).
C'é però un modo per far effettuare il download: forzare il download tramite PHP.
A questo punto dirai: eh, ok... ma se gli altri siti linkano il file PHP? Cosa cambia da prima? risposta: nulla
.
Però con il file PHP hai la possibilità di eseguire codice prima del download. Quindi potresti o controllare il sito di provenienza (con $_SERVER['HTTP_REFERER']).
Però anche qui c'é un guaio: non tutti i browser inviano questo dato.
Se conosci PHP, potresti fare, invece, un sistema di chiavi inviate come parametro GET al file che effettua il download forzato. Ad esempio, per ogni download generi una chiave successiva salvata su server. Se il file non riceve quella chiave, o comunque la chiave non coincide con quella salvata su server, non effettuare il download. Quindi il link sarà una cosa del tipo:
Codice PHP:
<a href="download.php?pagina=documento.pdf&chiave="<?= $chiave_salvata_su_db ?>
Effettuato il download, ovviamente devi ricambiare la chiave, generandone un'altra. In questo modo, non sarà possibile effettuare il download del file con un link "statico".
Ah, così è anche banale fare un contatore dei download 
Ciao!