J’ai un répertoire de fichiers mp3 que je veux pouvoir les servir en ligne ou donner à l’utilisateur une option de téléchargement en fonction de l’URI de la demande.
/media/file1.mp3 – Dans ce cas, je veux juste servir le fichier et laisser le navigateur y jouer.
/media/download/file1.mp3 – dans ce cas, je veux que l’utilisateur puisse télécharger le fichier à la place.
J’ai été capable d’accomplir ceci avec mod_rewrite et php (en utilisant la fonction header () et readfile ()) mais je préfère tout faire avec mod_rewrite, mod_header etc si possible.
Avec mod_rewrite, vous ne pouvez modifier que certains champs d’en-tête spécifiques, auxquels le champ d’en – tête Content-Disposition n’appartient pas. Vous ne pouvez modifier que le champ d’en – tête Content-Type :
RewriteRule ^media/[^/]+\.mp3$ - [L,T=audio/mpeg] RewriteRule ^media/download/[^/]+$ - [L,T=application/octet-stream]
Et si vous voulez utiliser une solution mod_headers + mod_setenvif :
SetEnvIf Request_URI ^/media/download/ force-download Header set Content-Disposition attachment Header set Content-Type application/octet-stream
IfDefine vérifiera les variables définies au démarrage d’Apache pour que cela ne fonctionne pas. Une configuration valide serait:
SetEnvIf Request_URI ^/media/download/ force-download Header set Content-Disposition attachment env=force-download
La modification du type de contenu n’est pas nécessaire pour forcer un téléchargement.