Ich weiß nicht, ob man das per htaccess einfach lösen kann. Der Verzeichnisschutz per htaccess erfordert ja einen eigenen Login.
Das wäre dann doppelt gemoppelt.
Wenn man Zugriff auf das Rootverzeichnis des Servers hat, kann man die Downloaddateien in ein Verzeichnis außerhalb des httpdocs-Verzeichnisses
legen.
Per URL kann dann von außen schonmal auf dieses Verzeichnis niemand zugreifen.
Per PHP hat man aber über Dateibefehle (z.B. readfile) dennoch Zugriff auf dieses Verzeichnis. Allerdings kann man dann nicht einfach die Links zu den
Dateien in den Code schreiben.
Man schreibt eine php-Datei, der man die als Parameter die ID eines Datenbakeintrages mit dem Dateipfad übergibt.
Der Link für den User sähe dann zum beispiel so aus.
echo "<a href='get_download_file.php?ID=4'>Filename<a>";
in get_download_file.php hat man dann eine Funktion die entweder die entsprechende Datei mit readfile ausgibt oder die Datei temporär für den User in ein Downloadverzeichnis unter httpdocs kopiert und erzeugt den Link dynamisch. (In diesem Fall müsste der User halt zweimal klicken, da der endgültige Link erst generiert wird, Vorteil bei der Kopielösung, man kann die Dateien auch in einem X-beliebigen Verzeichnis unterhalb httpdocs verstecken und braucht nicht unbedingt Rootzugriff.)
Da man in der PHP-Datei
prüfen kann, ob der User eingeloggt ist, kann ein Unbefugter auch durch Eingabe von get_download_file.php?ID=5 nicht zugreifen.
Leider kann ich dies im Moment nicht genauer ausführen, da ich selbst
diesen Lösungsansatz bisher noch nicht benötigt habe.
Eventuell ist auch eine Lösung über die Verzeichnisrechte des Servers möglich.