Es bien facil.
Imaginemos que tienes un archivo que se llama
descargar.php
Código PHP:
## Imaginando que el archivo no cambia.
$archivo = "prueba.txt";
if ((isset($_GET['file'])) && (!empty($_GET['file'])) && ($archivo==$_GET['file'])){
##Generamos el archivo
$contenido = "Hola Mundo.";
$f=fopen($archivo,"w");
fwrite($f,$contenido);
fclose($f);
$enlace = $archivo;
header ("Content-Disposition: attachment; filename=".$enlace);
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($enlace));
readfile($enlace);
}
Y finalmente tengo mi archivo html con este link
<a href="descargar.php?file=prueba.txt">Archivo</a>