URL 書き換えを使用して、ファイル名を引数としてスクリプトに渡すことができます。スクリプト (この例では downloadexecutable.php) は、'download' を含む $_GET 引数 'q' に応答します。
<?php
if (isset($_GET['q']) && $_GET['q'] == "download") {
//you will want to:
//1) set Content-type to be the correct type...I just set it to octet-stream because I'm not sure what it should be
header('Pragma: public'); // required
header('Expires: 0'); // no cache
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private',false);
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename('http://code.google.com/fold/file1.exe').'"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize('http://code.google.com/fold/file1.exe')); // provide file size
echo file_get_contents('http://code.google.com/fold/file1.exe'); // push it out
exit()
}
?>
次に、次のように、ルート ディレクトリの .htaccess ファイルで Apache の URL 書き換えを有効にします。
RewriteEngine On
RewriteRule ^(.+)\.exe$ /downloadexecutable.php?q=$1 [NC,L]
ユーザーが .exe で終わるファイルを要求した場合、次のように downloadexecutable.php を実行する必要があります。
リクエスト: http://yoursite.com/download.exe
PHP によって実際に処理されるもの: http://yoursite.com/downloadexecutable.php?q=download
リクエスト: http://yoursite.com/this/could/be/a/bug.exe
処理済み: http://yoursite.com/downloadexecutable.php?q=this/could/be/a/bug
明らかに少し作業が必要であり、上記のいずれもテストしていませんが、少しいじって、Google を使用する気があれば、動作させることができるはずです。
URL 書き換えチュートリアル: http://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/
PHP のソース: http://snipplr.com/view/22546/