Les ancres manquantes peuvent-elles être enregistrées?


8

Si j'ai un lien cassé, il est enregistré avec un 404. Si j'ai un lien vers une ancre et que l'ancre est manquante, je n'ai pas d'entrée dans le journal. Comment puis-je trouver ces liens d'ancrage rompus, surtout si le trafic provient d'un référent? Existe-t-il un moyen de configurer la journalisation pour capturer ces informations?

Serveur HTTP: Apache 2


+1, je me suis souvent demandé s'il y avait un moyen pratique (automagique) de le faire.
Tim Post

Réponses:


11

Il est impossible de configurer la journalisation de la partie #fragment de l'URL car votre serveur Web ne la voit jamais. De RFC3986

l'identifiant de fragment est séparé du reste de l'URI avant une déréférence, et ainsi les informations d'identification dans le fragment lui-même sont déréférencées uniquement par l'agent utilisateur, quel que soit le schéma d'URI. Bien que cette gestion distincte soit souvent perçue comme une perte d'informations, en particulier pour une redirection précise des références à mesure que les ressources évoluent dans le temps, elle sert également à empêcher les fournisseurs d'informations de refuser aux auteurs de référence le droit de se référer aux informations d'une ressource de manière sélective. Le référencement indirect offre également une flexibilité et une extensibilité supplémentaires aux systèmes qui utilisent des URI, car les nouveaux types de supports sont plus faciles à définir et à déployer que les nouveaux schémas d'identification.

Cela signifie que le navigateur Web supprime essentiellement la partie d'ancrage de l'URI avant de l'envoyer au serveur Web. Le protocole HTTP ne gère même pas les fragments à cause de cela; ils ne sont jamais envoyés par fil.

Les fragments sont disponibles pour JavaScript (car il est côté client) dans le cadre de la propriété location.href. Une fois le nom du fragment obtenu, vous pouvez confirmer qu'il est valide en recherchant cette valeur dans la propriété name des éléments du tableau document.anchors [].

Une fois que vous avez fait cela, il peut être enregistré à l'aide d'AJAX ou, comme des notes , transmis à Google Analytics ou à des services similaires.


Si l'ancre est juste, <a name="blah"></a>vous ne pourrez pas déterminer l'existence avec getElementByID; cela pourrait fonctionner dans IE (je ne suis pas sûr que ce soit toujours le cas dans 8), mais si vous voulez le faire, je suggère également d'ajouter l'identifiant.
Cebjyre du

Hmm. Gapped a bit there :) Oui, l'ajout de l'id est le plus efficace, ou vous pouvez parcourir le DOM par nom ou nom de variable. Je vais arranger ça.
JasonBirch

Je me demande si le ping d'ancrage html5 pourrait être utilisé à cette fin.
Kzqai

3

Comme d'autres l'ont dit, les ancres de page sont quelque chose sur lequel le navigateur fonctionne plutôt que sur le serveur Web.

Vous pouvez utiliser du code pour transmettre les informations d'ancrage à votre programme Analytics. Par exemple, vous pouvez extraire la location.hashvaleur et la transmettre à Google Analytics en tant que variable personnalisée .

Plus utilement, vous pouvez exécuter du code qui vérifie le code HTML de la page pour une ancre qui correspond à la valeur de location.hashet si elle manque déclenche un événement GA . Cela vous donnerait alors un rapport GA sur les liens d'ancrage de page brisés lorsque les utilisateurs cliquent dessus.


Bonne idée. Il y a tellement de choses que je pourrais faire avec GA mais je ne le fais pas, laissant probablement de l'argent sur la table ...
JasonBirch

1

Je ne pense pas qu'il soit possible de voir cela dans les journaux d'Apache. Si un fichier est demandé et servi, cela met fin à peu près à l'implication d'Apache (ou de tout autre serveur). La recherche et le positionnement de l'ancre sont quelque chose que le navigateur fait. Au moment où votre navigateur parvient à localiser l'ancre, la connexion au serveur est déjà fermée.

Un bon vérificateur de liens devrait reprendre cela, mais c'est un processus manuel.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.