はい、これは可能です。Apacheで書き換えモジュールを使用できます。したがって、すべての(mp3)ファイルについて、サーバーはmp3ファイルを返すのではなく、クエリを実行してmp3ファイルを返すphpファイル/スクリプトを実行する必要があると言えます。
これはあなたを助けるかもしれません: http://www.workingwith.me.uk/articles/scripting/mod_rewrite
.htaccess ファイルで:
RewriteEngine on
RewriteRule ^\.mp3$ index.php [L]
これにより、.mp3 で終わるすべてのリンクが index.php に送信されます (実際には同じリンクですが、index.php が実行されます)。
あなたが持っている他のオプション:
RewriteRule ^.*/(\w)*\.mp3$ index.php?filename=$1 [L]
これにより、GET veriable filename を使用して index.php が実行されます。$_GET['filename'] = "filename"
(ファイル名.mp3の場合)
index.php で、ユーザーが mp3 ファイルをダウンロードできるようにします (参照: PHP で MP3 ファイルを提供できますか? ):
header("Content-Transfer-Encoding: binary");
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3");
header('Content-length: ' . filesize("[file location eg: /home/files/sometrack.mp3]"));
header('Content-Disposition: attachment; filename="sometrack.mp3"');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
readfile("[file location eg: /home/files/sometrack.mp3]");
exit();
次のコードを使用して、これを動的に行うことができます。
$fileName = $_GET['filename']."mp3"; //we stripped .mp3 in the apache rewrite (might not be so smart)
$fileLocation = "/your/location/".$filename;
header("Content-Transfer-Encoding: binary");
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3");
header('Content-length: ' . filesize($fileLocation));
header('Content-Disposition: attachment; filename="'.$fileName.'"');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
readfile($fileLocation);
exit();
要求されたリンクには次の方法でアクセスできます。
$_SERVER['REQUEST_URI'];
または新しい(生成されたURL):
$_SERVER['REDIRECT_URL'];