Merci beaucoup duffJohn, en suivant ta piste, je suis parvenu à faire ce que je voulais, à savoir cacher le veritable lien de telechargement au visiteur en le remplaçant par un lien de substitution.
Si ça peut aider quelqu'un, voici mon bout de code. Ce n'est peut être pas la solution ultime ou la plus propre, mais elle fonctionne ;)
On suppose que le lien réel de téléchargement est : /download/fichiers/12/monfichier.zip (ou le nom "monfichier" correspond au slug du post et "12" à l'id du post)
1/ Dans ma vue je place le lien de telechargement :
<a href="<?php echo $this->Html->url('/telechargement/'.$post'Post']'id'])?>">Télécharger le fichier</a>
2/ Dans mes routes, je reroute le lien fictif vers un controller et une action download en passant l'id du post :
Router::connect('/telechargement/:id', array('controller' => 'posts', 'action' => 'download'), array('pass'=>array('id'),'id'=>'[0-9]+'));
3/ Pour finir dans mon controller, je crée la fonction download qui redirigera vers le véritable lien de téléchargement :
function download ($id = null, $slug = null) {
$this->view = 'Media';
$this->autoLayout = false;
$post = $this->Post->find('first', array(
'conditions' => array('Post.id' => $id),
'recursive' => 0
));
$id = $post'Post']'id'];
$slug = $post'Post']'slug'];
/**
* Je redirige vers le lien réel
* */
$this->redirect('/download/fichiers/'.$id.'/'.$slug.'.zip');
}
Ainsi, le véritable lien de download n'apparait pas au visiteur qui clique sur " /telechargement/12 "
Merci encore à duffJohn de m'avoir indiqué une piste ... J'étais dans le brouillard :)