There are many ways to do this, depending on what your server supports.
Given that you listed php and html as tags for your question, I will limit this answer to those, but I assume apache is running behind it, which could also be used.
Basically, what you want to do is create a script or page that redirects to the new url.
The easiest and most elegant option is to use php, so I will start with this one.
You create a new page, for example, called
download.php and inside you forward to the url. I could write a whole selector script with security checks etc, but that's outside of the scope of this question and would be more suitable on Stack Overflow too.
$file = $_GET['file'];
Note, writing a new header requires that there was no previous output by the script, otherwise any output will write a standard header to the page and the header command won't work.
You would now make hyperlinks like:
HTML would require a page for each file, and tags to redirect to the download. This would mean that the url would change, but files can be controlled through those pages.
Lastly, htaccess can be used to mask the download.php file.
Also, htaccess can do everything without a php script too, but again, not sure if you are using Apache.