Comment obtenir des statistiques d’parsing pour les redirections mod_rewrite?

J’ai un site Web contenant environ 200 règles apache mod_rewrite dans httpd.conf, exécuté sur le serveur Web Apache dans RedHat.

Voici un exemple d’une des règles, la plupart d’entre elles sont des URL courtes qui redirigent vers de très longues URL:

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

On m’a demandé d’obtenir des parsings Web pour ces redirections.

“Combien de personnes ont utilisé l’URL mysite.com/grad2014?” – Eh bien, je ne sais pas vraiment, car / grad2014 n’existe pas sur le serveur Web, et Google Analytics est configuré sur la page index.html.

Je ne semble pas voir les raccourcis dans le fichier access.log. Existe-t-il une autre façon de voir quelles URL sont les plus populaires? Est-il possible de commencer à enregistrer cela?

Une façon de le faire:

Ajoutez la correspondance de réécriture en tant que paramètre de requête sur l’URL cible:

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

Ensuite, dans votre code GA, capturez ce paramètre URL et placez-le dans une variable personnalisée. Je ne sais pas si vous savez quelque chose sur les variables personnalisées , mais voici un exemple d’une façon de le définir:

 // 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 sortinggger _gaq.push(["_trackPageview"]); 

REMARQUE: par défaut, GA compte le nom de la page sous le nom location.pathname+location.search conséquent, l’ajout du rr à l’URL affecte le rapport de vos pages. Le moyen le plus simple de résoudre ce problème est de créer un filtre dans GA pour le retirer du nom de la page entrante (requête URI), mais si vous en avez besoin, vous pouvez écrire du code pour obtenir location.pathname+location.search moins rr _trackPageview cette valeur en tant que 2ème élément de votre _trackPageview .

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

Le fichier access.log devrait vous donner ce que vous voulez, par exemple

 cd /var/log/apache2 || cd /var/log/httpd # Get a list of the 301 redirects issued. grep 301 access?log # Count the 301 redirects issued. grep 301 access?log | wc -l # Count a specific redirect grep 301 access?log | grep grad2014 | wc -l