我有一个小网站,有几个PDF可供免费下载。我使用StatCounter来观察页面加载的数量。它还显示了我的PDF下载数量,但它仅考虑用户点击我网站链接的下载量。但是对PDF的“外部”访问是什么(例如,直接来自Google搜索)?我怎么算这些?是否有可能使用StatCounter等工具?
感谢。
答案 0 :(得分:1)
您可以使用log analyzer来检查文件的访问次数。如果他们提供访问日志和日志分析器软件的访问权,请询问托管服务提供商。
答案 1 :(得分:1)
在php中,它会像(未经测试):
$db = mysql_connect(...);
$file = $_GET['file'];
$allowed_files = {...}; // or check in database
if (in_array($file, $allowed_files) && file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
mysql_query('UPDATE files SET count = count + 1 WHERE file="' . $file . '"')
readfile($file);
exit;
} else {
/* issue a 404, or redirect to a not-found page */
}
答案 2 :(得分:1)
.htaccess(重定向* .pdf请求下载.php):
RewriteEngine On
RewriteRule \.pdf$ /download.php
的download.php:
<?php
$url = $_SERVER['REQUEST_URI'];
if (!preg_match('/([a-z0-9_-]+)\.pdf$/', $url, $r) || !file_exists($r[1] . '.pdf')) {
header('HTTP/1.0 404 Not Found');
echo "File not found.";
exit(0);
}
$filename = $r[1] . '.pdf';
// [do you statistics here]
header('Content-type: application/pdf');
header("Content-Disposition: attachment; filename=\"$filename\"");
readfile($filename);
?>
答案 3 :(得分:0)
您必须创建一种从服务器捕获请求的方法。
如果您使用的是php,最好的方法是使用mod_rewrite。 如果你使用.net,一个HttpHandler。
您必须处理请求,调用statcounter,然后将pdf内容发送给用户。