web-dev-qa-db-fra.com

Peut-on consigner les ancres manquantes?

Si j'ai un lien brisé, il est enregistré avec un 404. Si j'ai un lien vers une ancre et que l'ancre est manquante, je ne reçois aucune entrée dans le journal. Comment puis-je trouver ces liens d'ancrage brisés, 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

8
Dennis Williamson

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 un déréférencement, de sorte que les informations d'identification contenues dans le fragment lui-même sont déréférencées par l'agent utilisateur, quel que soit le schéma d'URI. Bien que ce traitement séparé soit souvent perçu comme une perte d’informations, en particulier pour une redirection précise des références à mesure que les ressources évoluent, il permet également d’empêcher les fournisseurs d’informations de refuser aux auteurs des références le droit de renvoyer sélectivement aux informations d’une ressource. Le référencement indirect fournit également une flexibilité et une extensibilité supplémentaires aux systèmes utilisant des URI, car les nouveaux types de média sont plus faciles à définir et à déployer que les nouveaux schémas d'identification.

Cela signifie que le navigateur Web supprime la partie ancre 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 sur le fil.

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

Une fois cette opération effectuée, vous pouvez vous connecter à l'aide de AJAX ou, comme notes Pelms , à Google Analytics ou à des services similaires.

11
JasonBirch

Comme d'autres l'ont dit, le navigateur fonctionne plutôt que le serveur Web.

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

Plus utilement, vous pourriez exécuter du code qui vérifie le code HTML de la page pour trouver une ancre correspondant à la valeur de location.hash et 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.

3
pelms

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 pratiquement fin à la participation d'Apache (ou de tout autre serveur). Le navigateur recherche et positionne le point d'ancrage. 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 le comprendre, mais c'est un processus manuel.

1
Tim Post

CSE HTML Validator vérifie les ancres manquantes ... pour un prix.

Voir http://www.htmlvalidator.com/htmlval/whycseisbetter.html

0
vmarquez