2017-08-07 60 views
0

我想要做的是收集播客的下載數據。當某集的.mp3文件被請求時,我想將其跟蹤到我的Google Analytics(分析)帳戶。如何在.htaccess中返回所請求的文件,然後運行PHP腳本?

我發現堆棧溢出文章顯示瞭如何將請求重定向到PHP腳本,該腳本將數據跟蹤到Google Analytics然後返回.mp3文件,但由於某些原因,這在Safari和iOS中破壞了在Chrome中運行)。

這是我用什麼.htaccess文件:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule (.*).(mp3) download.php?file=$1.$2 [R,L] 
</IfModule> 
# END WordPress 

所以我想知道是否有一種方法可以腳本我的.htaccess文件到正常返回的文件,但後來打電話給我download.php只處理Google Analytics(分析)跟蹤的腳本,如果因任何原因而失敗,則不會干擾收聽文件的人員。

謝謝!

回答

0

您可以嘗試設置腳本,該腳本使用Measurement Protocol(可能使用cURL)向Google Analytics服務器端發送數據,並使用正確的標頭提供文件,以便不涉及重定向。

的download.php:

<?php 

$filename = $_GET['file']; 

$data = array('v'=>'1', 
       'tid'=>'UA-XXXXX-Y', 
       'cid'=>'555', 
       't'=>'event', 
       'ec'=>'sound' 
       'ea'=>'download' 
       'el'=>$filename); 
$url = 'https://google-analytics.com/collect'; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_exec($ch); 

if(file_exists($filename)) { 
    header('Content-Type: audio/mpeg'); 
    header('Content-Disposition: filename="test.mp3"'); 
    header('Content-length: '.filesize($filename)); 
    header('Cache-Control: no-cache'); 
    header("Content-Transfer-Encoding: chunked"); 

    readfile($filename); 
} else { 
    header("HTTP/1.0 404 Not Found"); 
} 

或者你可以嘗試解析Apache訪問日誌用cron作業腳本,但似乎內存消耗和過於複雜。

編輯:我在GAMP代碼添加,並通過語法變更爲更加積極

相關問題