为什么?我目前正在从 Adwords 购买流量到我的电子商务网站。在 Adwords 上,我可以看到有多少访问我已经购买并尝试通过分析 Apache 的 access_log 来验证我的网站的访问次数。
请注意,我确实安装了 Mixpanel,但它报告的数字要低得多。
因此我尝试安装 Apache 的mod_unique_id
。我将其添加到我的 access_log 中,并尝试访问我的网站首页(wordpress 页面)。这是日志:
W2P5AswfRANRW1uZBgVINAAAAAA 50.74.231.163 - - [03/Aug/2018:06:41:06 +0000] "GET / HTTP/1.1" 200 15571
W2P5A8wfRANRW1uZBgVINQAAAAE 50.74.231.163 - - [03/Aug/2018:06:41:07 +0000] "GET /wp-content/plugins/LayerSlider/static/layerslider/css/layerslider.css?ver=6.7.1 HTTP/1.1" 200 3876
W2P5A8wfRANRW1uZBgVINgAAAAM 50.74.231.163 - - [03/Aug/2018:06:41:07 +0000] "GET /wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.0.1 HTTP/1.1" 200 656
W2P5A8wfRANRW1uZBgVINwAAADw 50.74.231.163 - - [03/Aug/2018:06:41:07 +0000] "GET /wp-content/themes/themextend/css/magnific-popup.css?ver=4.9.5 HTTP/1.1" 200 1816
W2P5A8wfRANRW1uZBgVIOAAAADI 50.74.231.163 - - [03/Aug/2018:06:41:07 +0000] "GET /wp-content/themes/themextend/css/animate.css?ver=4.9.5 HTTP/1.1" 200 4348
W2P5A8wfRANRW1uZBgVIOQAAACY 50.74.231.163 - - [03/Aug/2018:06:41:07 +0000] "GET /wp-content/themes/themextend/css/theme-style.css?ver=4.9.5 HTTP/1.1" 200 3035
W2P5A8wfRANRW1uZBgVIOgAAABI 50.74.231.163 - - [03/Aug/2018:06:41:07 +0000] "GET /wp-content/themes/themextend/style.css?ver=4.9.5 HTTP/1.1" 200 2136
W2P5A8wfRANRW1uZBgVIOwAAACQ 50.74.231.163 - - [03/Aug/2018:06:41:07 +0000] "GET /wp-content/plugins/kingcomposer/includes/frontend/vendors/owl-carousel/owl.theme.css?ver=2.6.17 HTTP/1.1" 200 658
W2P5BMwfRANRW1uZBgVIPAAAADE 50.74.231.163 - - [03/Aug/2018:06:41:08 +0000] "GET /wp-content/plugins/kingcomposer/includes/frontend/vendors/owl-carousel/owl.carousel.css?ver=2.6.17 HTTP/1.1" 200 528
W2P5BMwfRANRW1uZBgVIPQAAACU 50.74.231.163 - - [03/Aug/2018:06:41:08 +0000] "GET /wp-content/themes/themextend/css/slick.css?ver=4.9.5 HTTP/1.1" 200 557
W2P5BMwfRANRW1uZBgVIPgAAAC0 50.74.231.163 - - [03/Aug/2018:06:41:08 +0000] "GET /wp-content/themes/themextend/css/owl.carousel.min.css?ver=4.9.5 HTTP/1.1" 200 912
W2P5BJARzZ5ERwnzv6rD5gAAAIs 50.74.231.163 - - [03/Aug/2018:06:41:08 +0000] "GET /wp-content/themes/themextend/css/meanmenu.min.css?ver=4.9.5 HTTP/1.1" 200 682
W2P5BNIyikkB8rhsjsyUkQAAAMw 50.74.231.163 - - [03/Aug/2018:06:41:08 +0000] "GET /wp-content/themes/themextend/css/theme-default.css?ver=4.9.5 HTTP/1.1" 200 2643
W2P5BISOELTKgpmuElDYuQAAAEI 50.74.231.163 - - [03/Aug/2018:06:41:08 +0000] "GET /wp-content/themes/themextend/css/blog-post.css?ver=4.9.5 HTTP/1.1" 200 4773
如你看到的:
- 以上包含的所有内容1 次访问
- mod_unique_id 生成一个唯一的 ID每个web 请求。我的首页的 html 包含 > 30 项资产,例如本地托管的 CSS 和图像。
- 上述每个请求的时间戳能有所不同。
- 可能会发生多次访问同时地(IP会有所不同)
我如何配置 Apache 来允许我计算每个访问能否顺利访问我的网站?
答案1
使用客户端跟踪、cookie 等。请记住,大多数 IPv4 地址位于 NAT 后面,因此每个地址可能有多个用户。
httpd 的一个实现是mod_usertrack。
如果你全力投入谷歌,你可以得到广告分析。
答案2
以下是我编写的一段 PHP 代码,它设置一个带有随机值的 cookie,如果已设置 cookie,则覆盖该 cookie。您可以将其附加到要计为一次单独访问的每个页面的开头(或结尾)(并为其添加扩展名.php
)。
<?php
/*
* generateRandomString() is used to generate the ID, taken from
* https://stackoverflow.com/questions/4356289/php-random-string-generator/4356295#4356295
*/
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
// Will generate an ID 12 characters long.
setcookie("visit", generateRandomString(12));
?>
然后,将条目放入%{visit}C
生成的LogFormat
ID 位置mod_unique_id
。这通过在客户端每次访问实际页面时设置带有 ID 的 cookie 来实现,并且该 cookie 将在%{visit}C
每次访问时出现在日志中。当我写这个答案时,我打算使用PHP 会话变量但无法找到将其包含在 Apache 日志文件中的方法。
这是我在编写 PHP 脚本之前编写的一个更简单的解决方案,我不想删除它。这个解决方案不能像其他解决方案那样准确地回答您的问题,但您(或其他阅读此内容的人)可能仍然会发现它很有用。
您可以在另一个日志中记录对资产的请求,这样主日志就只有页面访问量(和机器人)。以下代码检查 URL 是否只包含.css
或.jpg
(根据需要添加或删除您自己的扩展)在站点配置的 VirtualHost 部分中:
SetEnvIf Request_URI /.css/ assets
SetEnvIf Request_URI /.jpg/ assets
要记录‘访问’,请env=!assets
在您的CustomLog
条目后附加:CustomLog /path/to/visit/log <logformat identifier> env=!assets
对于记录资产,如下表所示:CustomLog /path/to/asset/log <logformat identifier> env=assets