Wenn ich einen defekten Link habe, wird dieser mit einem 404 protokolliert. Wenn ich einen Link zu einem Anker habe und der Anker fehlt, erhalte ich keinen Eintrag im Protokoll. Wie kann ich diese defekten Ankerverbindungen finden, insbesondere wenn der Datenverkehr von einem Referrer stammt? Gibt es eine Möglichkeit, die Protokollierung so zu konfigurieren, dass diese Informationen erfasst werden?
HTTP-Server: Apache 2
Antworten:
Es ist nicht möglich, die Protokollierung des Teils #fragment der URL zu konfigurieren, da Ihr Webserver sie nie sieht. Von RFC3986
Dies bedeutet, dass der Webbrowser den Ankerteil des URI grundsätzlich entfernt, bevor er an den Webserver gesendet wird. Das HTTP-Protokoll behandelt aus diesem Grund nicht einmal Fragmente. Sie werden nie über den Draht geschickt.
Fragmente stehen JavaScript (da es clientseitig ist) als Teil der Eigenschaft location.href zur Verfügung. Sobald Sie den Fragmentnamen erhalten haben, können Sie seine Gültigkeit bestätigen, indem Sie die Namenseigenschaft der Array-Elemente document.anchors [] nach diesem Wert durchsuchen.
Sobald Sie dies getan haben, kann es mit AJAX protokolliert oder als Pelms Notes an Google Analytics oder ähnliche Dienste übergeben werden.
quelle
<a name="blah"></a>
Sie mit getElementByID die Existenz nicht bestimmen. Es könnte im IE funktionieren (ich bin nicht sicher, ob es in 8 noch der Fall ist), aber wenn Sie dies tun möchten, würde ich vorschlagen, auch die ID hinzuzufügen.Wie andere bereits gesagt haben, sind Seitenanker etwas, auf dem der Browser und nicht der Webserver arbeitet.
Sie können Code verwenden, um die Ankerinformationen an Ihr Analytics-Programm weiterzuleiten. Sie können den
location.hash
Wert beispielsweise extrahieren und als benutzerdefinierte Variable an Google Analytics übergeben .Nützlicher ist, dass Sie Code ausführen können, der die HTML-Seite auf einen Anker überprüft, der dem Wert von entspricht,
location.hash
und wenn er fehlt, ein GA-Ereignis auslöst . Das würde Ihnen dann einen GA-Bericht über fehlerhafte Seitenanker-Links geben, wenn Benutzer darauf klicken.quelle
Ich denke nicht, dass es möglich ist, dies in Apaches Protokollen zu sehen. Wenn eine Datei angefordert und bereitgestellt wird, endet damit die Beteiligung von Apache (oder eines anderen Servers). Das Finden und Positionieren des Ankers ist etwas, was der Browser tut. Zu dem Zeitpunkt, an dem Ihr Browser den Anker findet, ist die Verbindung zum Server bereits geschlossen.
Ein guter Linkprüfer sollte das aufgreifen, aber das ist ein manueller Vorgang.
quelle
CSE HTML Validator sucht nach fehlenden Ankern ... zu einem Preis.
Siehe http://www.htmlvalidator.com/htmlval/whycseisbetter.html
quelle