perso, quand je veux filtrer les acces a une donnée, je mets un deny from all sur le dossier et je demande a un php de récupérer le contenu du fichier.
c'est le script php qui décide si oui ou non il faut aller chercher le contenu du fichier et l'envoyer.
si mon idee t'interesse :
********/lien.php?file=toto.zip
[si le fichier existe et l'utilisateur a les droits dessus]
$contenu= file_get_contents($file);
header('content-type: application/octet-stream');
echo $contenu;
[sinon]
echo 'vous devez être identifié pour accéder à ce fichier';