Die RewiteRule die ich mir bisher erarbeitet habe und leider nicht funktioniert sieht so aus:
RewriteRule /admin/download/(.)+ /admin/download.php
Bei Benutzung in der .htaccess des obersten Verzeichnisses muss das so aussehen:
RewriteEngine on
RewriteBase /
RewriteRule ^admin/download/ admin/download.php
Die ersten beiden Zeilen hast Du vielleicht nur vergessen zu zitieren.
Der wesentliche Unterschied ist, dass das Muster ohne Schrägstrich beginnt, da die zu vergleichende URL bei Nutzung in der .htaccess immer relativ zum jeweiligen Verzeichnis angeliefert wird (hier zB: "admin/download/datei", nicht "/admin/download/datei").
Weiterhin solltest Du darauf achten, das Muster möglichst genau anzupassen. Deine URL beginnt mit admin, daher sollte das Muster auch als erstes Zeichen das Hier-beginnt-der-Text-^ bekommen. admin/download passt auf example.com/admin/download, aber auch auf example.com/ganz/tief/unten/admin/download; ^admin/download passt nur auf die erste URL.
Drittens wäre es eventuell sinnvoll, diese Regel im dazugehörigen Verzeichnis abzulegen (hier: /admin/) statt im Wurzelverzeichnis, damit sie nicht bei sämtlichen Zugriffen auf den Webserver ausgeführt werden muss. Die .htaccess wäre dann /admin/.htaccess und hätte diesen Inhalt:
RewriteEngine on
RewriteBase /admin/
RewriteRule ^download/ download.php
Viertens kannst Du Dir den Rewrite-Kram sparen, wenn Du im Verzeichnis /admin/ die Option AcceptPathInfo einschaltest (und einen Apache 2 benutzt). Ein Zugriff auf /admin/download.php/blabla landet dann ohne weitere Umstände bei /admin/download.php zusammen mit der Variablen $_SERVER["PATH_INFO"]="blabla". Ist vielleicht nicht so hübsch (wegen des download.php/ statt download/), aber auch eine Möglichkeit.
Beschränke die Option mit <files> auf download.php (wie im Beispiel von AcceptPathInfo angegeben). Unter Umständen akkzeptiert Dein PHP-Interpreter derartige URLs auch ohne Setzen von AcceptPathInfo, probiere es aus.