En lugar de fopen + fpasthru + fclose, podrias usar
readfile() siguiendo el primer ejemplo del manual.
Claro, esto no modificara el comportamiento del navegador y, lo de la redireccion, no es posible, porque el contenido de "la pagina" debe ser exclusivamente el archivo a descargar, cualquier otra cosa que venga (antes o) despues de eso, como encabezados y/o HTML sera "basura" agregada al archivo.