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

jep*_*rro 3 apache mod-rewrite webserver redirect google-analytics

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

以下是其中一个规则的示例,其中大多数都是重定向到真正长URL的短网址:

 RewriteRule ^grad2014/?$ /registration-and-records/graduation/live/index.html [R=301,L]
Run Code Online (Sandbox Code Playgroud)

我被要求为这些重定向获取一些网络分析.

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

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

Cra*_*ent 5

一种方法可以做到:

在目标网址上添加重写匹配作为查询参数:

RewriteRule ^grad2014/?$ /registration-and-records/graduation/live/index.html?rr=$0 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

然后在您的GA代码中,捕获该URL参数并将其放入自定义变量中.我不知道你是否对自定义变量一无所知,但这里有一个设置它的方法的例子:

// 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"]);
Run Code Online (Sandbox Code Playgroud)

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

_gaq.push(["_trackPageview","custom page name here"]);
Run Code Online (Sandbox Code Playgroud)