per quanto riguarda apache puoi usare l'htaccess e l'htpassword ma un utente che ha già avuto accesso all'area privata e deve mettere una password un'altra volta potrebbe diventare scocciante...
io ti consiglio ( ma questo non riguarda più apache ma direttamente php ) di creare una pagina php che funga da proxy... mi spiego : hai il sito in /var/www/sito/ e i pdf in /var/www/pdf tu fai una pagina in php che viene richiamata dalla pagina precedente con un id ( o il nome del file ) e glielo rispedisce negli header
es:
pagina_principale.php
Codice PHP:
[url="dammiilpdf.php?nome=1.pdf"]1 pdf[/url]
[url="dammiilpdf.php?nome=2.pdf"]2 pdf[/url]
[url="dammiilpdf.php?nome=3.pdf"]3 pdf[/url]
dammiilpdf.php
Codice PHP:
$dir = "/var/www/pdf/";
if(isset($_GET["nome"]) && file_exist($dir.$_GET["nome"]))
{
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename='downloaded.pdf'");
readfile($_GET["nome"]);
}
else
{
echo "mi dispiace ma il pdf non è stato trovato";
}
spero di essere stato chiaro e di averti aiutato nel modo migliore possibile
ti rimando cmq alla pagina ufficiale del manuale php - manuale header