mod_rewrite
ソリューションは十分にエレガントであり、リンクを直接維持することが可能です。
で、PHP スクリプトへの.htaccess
すべてのリンクを書き換えます。.mp3
RewriteEngine on
RewriteRule \.mp3$ download.php
PHP ファイル内で、要求された URI を抽出し、ユーザーの IP を検証し、その検証に基づいて適切なヘッダーを返すことができます。
<?php
// Set variables
$requestedFile = trim($_SERVER['REQUEST_URI'], '/');
$ip = $_SERVER['REMOTE_ADDR'];
$protocol = isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0';
// If the file does not exist, throw a 404 error
if (!file_exists($requestedFile)) {
header($protocol . ' 404 Not Found');
}
// Is the user allowed to download?
function validateDownload($ip) {
/**
* Put your IP tracking and validation code here, returning `TRUE`
* or `FALSE`.
*/
return TRUE;
}
// Validate and perform appropriate action
$canDownload = validateDownload($ip);
if ($canDownload) {
header('Content-Disposition: attachment; filename="' . basename($requestedFile) . '"');
header('Content-type: audio/mpeg');
readfile($requestedFile);
} else {
header($protocol . ' 403 Forbidden');
}
これで、すべてのリンクは直接のままになり、適切なヘッダーをユーザー エージェントに返し、ダウンロードを促すか、アクセスを拒否します。