subearchivo.php
Cita: $ruta = dirname($url)."/".$_FILES['userfile']['name'];
pagdescarga.html
Cita: <a href="<?=$ruta?>">DESCARGAR</a>
El error q estas cometiendo es q defines $ruta en un script y luego lo utilizas en otro y nunca se lo pasas al template, por la URL sería lo más sencillo si es q el archivo q te da el path hacia el archivo esta ubicado en una carpeta distinta q el template, sino lo haces solamente en el template, además la plantilla tiene extensión .html, por lo q server es probable q no lo tome como un script de PHP y no procese los datos (en este caso imprimir $ruta). Además no deberías de poner el nombre del archivo recién subido en la $ruta porq esto te daría como rtado /www/htdocs/mi_sitio/mis_archivos/mi_archivo.txt ¿Pero no quieres mostrar y q tengan acceso a todos los archivos?, solo tendrías este enlace.
Por lo q debes agregarle el nombre del archivo y $ruta dejarla solo con dirname($url);
luego el en <a href=<?=$ruta."/".$nombre_del_archivo?>
Saludos cuidate