2013-03-01 54 views
0

我有計算文件下載的問題。如果下載文件的鏈接如下所示,則不存在問題:http:// your.site.domain/download.php?file = filename.exe & customer = ABC_423。然而,我的客戶想要從這樣的鏈接統計數據:http:// your.site.domain/downloadsfolder/ABC_423/filename.exe,並且他還需要在其他站點上鍊接該鏈接。在PHP中下載EXE文件的計數器

我認爲會有解決方案在.htaccess文件中,但我不知道如何進行正確的重定向。

我的PHP腳本是這樣的:

session_start(); 
define('SERVER_NAME', 'www.siteaddress.domain'); 
define('DOWNLOAD_PATH', 'http:// siteaddress.domain/versions/download'); 
define('DOWNLOAD_FILE', 'Setup.exe'); 

$filename = DOWNLOAD_PATH . '/' . $_GET['customer'] . '/' . DOWNLOAD_FILE; 

$headers = get_headers($filename); 

if ($headers[0] == 'HTTP/1.1 200 OK'){ 
    // file exists, begin download procedure 
    if(isset($_GET['customer'])){ 
    // begin update statistics 
    // mysql query to update specified row 
    } 
    // headers for downloading file 
    header("Content-Type: application/force-download"); 
    header('Content-Type: application/x-unknown'); 
    header("Content-Type: application/octet-stream"); 
    //header("Content-Type: application/download"); // not sure if needed 
    header("Content-Disposition: attachment; filename=".basename($filename).";"); 
    header("Accept-Ranges: bytes"); 
    header("Content-Transfer-Encoding: binary"); 
    header("Content-Length: ".remote_filesize(SERVER_NAME, $filename)); 
    ob_clean(); 
    flush(); 
    readfile($filename); 
    exit; 
}else{ 
    echo 'File not found'; 
    exit; 
} 

回答

2

這是.htaccess簡單RewriteRule。事情是這樣的:

RewriteEngine On 
RewriteRule ^/downloadsfolder/(.*)/(.*)  /download.php?file=$2&customer=$1 [L] 

如何觀察一個隨機字符序列與(.*)檢測,然後用$1$2用於在轉變的URL每個檢測項目。

希望有幫助!

+0

我試過這個,但我得到循環,因爲在download.php中的頭函數使得重定向到該文件了。因此,.htaccess將無限循環重定向... – p3le 2013-03-01 14:54:21

+0

請將'DOWNLOAD_PATH'更改爲本地路徑,而不是URL。這就是循環的原因。 – 2013-03-01 14:57:46

+0

謝謝你的時間和幫助。它幫助了我很多,我會嘗試你上面提到的這種方法。 – p3le 2013-03-01 15:25:28