apache - 如何获取 mod_rewrite 重定向的分析统计信息?

标签 apache mod-rewrite redirect google-analytics webserver

我有一个网站,在 httpd.conf 中有大约 200 条 apache mod_rewrite 规则,在 redhat 的 apache webserver 上运行。

这是其中一个规则的示例,其中大多数是重定向到非常长的 URL 的短 URL:

 RewriteRule ^grad2014/?$ /registration-and-records/graduation/live/index.html [R=301,L]

有人要求我对这些重定向进行一些网络分析。

“有多少人使用了 URL mysite.com/grad2014?” - 好吧,我真的不知道,因为/grad2014 在网络服务器上不存在,并且在 index.html 页面上设置了谷歌分析。

我似乎在 access.log 中没有看到任何快捷方式。还有其他方法可以查看哪些 URL 重定向最受欢迎?有没有办法开始记录这个?

最佳答案

一种方法:

将重写匹配作为查询参数添加到目标 url:

RewriteRule ^grad2014/?$ /registration-and-records/graduation/live/index.html?rr=$0 [R=301,L]

然后在您的 GA 代码中,捕获该 URL 参数并将其放入自定义变量中。不知道你是否知道custom variables ,但这里是一种设置方法的示例:

// example function get query param. use your own if you already have one
function getParam(n){var n=n||'';var x=new RegExp("[\\?&]"+n.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]")+"=([^&#]*)");var r=x.exec(window.location.href);return(r==null)?'':r[1]}

var rr = getParam('rr');
if (rr) {
  _gaq.push(["_setCustomVar", 1, "Mod Rewrite Redirect URL", rr, 3]);
}
// your on-page trigger
_gaq.push(["_trackPageview"]);

注意: 默认情况下,GA 将页面名称计为 location.pathname+location.search 因此将 rr 参数添加到 url 是会影响您的页面报告。解决此问题的最简单方法是在 GA 中创建一个过滤器,将其从传入的页面名称(请求 URI)中剥离,但如果需要,您可以编写一些代码来获取 location.pathname+location.search 减去 rr 查询参数并将该值填充为 _trackPageview 中的第二个元素。

_gaq.push(["_trackPageview","custom page name here"]);

关于apache - 如何获取 mod_rewrite 重定向的分析统计信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22514606/

相关文章:

java - tomcat启动但没有监听任何端口

linux - 配置 apache 2.2.21 时出现 gcc 错误

php - 在服务器上安装 PhantomJS

.htaccess - 如何让 RewriteRule (.htaccess) 的 [L] 标志真正起作用?

apache - 在一个 ip 地址下在 apache 上托管多个网站

Apache 404 错误记录到不同的日志文件

apache - 如何停止 .htaccess 指令而不重写循环

javascript - 从一个 AngularJS 应用程序切换到另一个——页面内容未更新

.htaccess - 重定向整个域

delphi - DataSnap 服务器 - 将 HTTP 请求重定向到另一个 DataSnap 服务器