Le ancore mancanti possono essere registrate?


8

Se ho un link non funzionante, viene registrato con un 404. Se ho un link a un anchor e l'ancoraggio è mancante, non ottengo una voce nel registro. Come posso trovare quei collegamenti di ancoraggio interrotti, specialmente se il traffico proviene da un referrer? C'è un modo per configurare la registrazione per acquisire queste informazioni?

Server HTTP: Apache 2


+1, mi sono spesso chiesto se esistesse un modo pratico (automagico) per farlo.
Tim Post

Risposte:


11

È impossibile configurare la registrazione della parte #fragment dell'URL perché il tuo server web non lo vede mai. Da RFC3986

l'identificatore di frammento è separato dal resto dell'URI prima di una dereferenza, e quindi le informazioni identificative all'interno del frammento stesso sono dereferenziate esclusivamente dall'agente utente, indipendentemente dallo schema URI. Sebbene questa gestione separata sia spesso percepita come una perdita di informazioni, in particolare per il reindirizzamento accurato dei riferimenti mentre le risorse si spostano nel tempo, serve anche a impedire ai fornitori di informazioni di negare agli autori di riferimento il diritto di fare riferimento alle informazioni all'interno di una risorsa in modo selettivo. Il riferimento indiretto fornisce inoltre ulteriore flessibilità ed estensibilità ai sistemi che utilizzano URI, poiché i nuovi tipi di media sono più facili da definire e distribuire rispetto ai nuovi schemi di identificazione.

Ciò significa che il browser Web sostanzialmente elimina la parte di ancoraggio dell'URI prima di inviarlo al server Web. Il protocollo HTTP non gestisce nemmeno i frammenti per questo motivo; non vengono mai inviati via cavo.

I frammenti sono disponibili per JavaScript (perché è lato client) come parte della proprietà location.href. Una volta ottenuto il nome del frammento, è possibile confermare che è valido cercando nella proprietà name il nome degli elementi dell'array document.anchors [].

Una volta fatto questo, può essere registrato utilizzando AJAX o, come note pelms , passato a Google Analytics o servizi simili.


Se l'ancoraggio è solo <a name="blah"></a>non sarai in grado di determinare l'esistenza con getElementByID; potrebbe funzionare in IE (non sono sicuro che sia ancora il caso in 8), ma se vuoi farlo, suggerirei di aggiungere anche l'id.
Cebjyre,

Hmm. Ci siamo lasciati un po 'lì :) Sì, l'aggiunta dell'id è la più efficiente, oppure potresti usare il DOM per nome o nome tagname. Lo aggiusterò.
JasonBirch,

Mi chiedo se il ping di ancoraggio html5 possa essere utilizzato per questo scopo.
Kzqai,

3

Come altri hanno già detto, le ancore di pagina sono qualcosa su cui il browser opera anziché il web server.

È possibile utilizzare un po 'di codice per trasmettere le informazioni di ancoraggio al programma Analytics. Ad esempio, è possibile estrarre il location.hashvalore e passarlo a Google Analytics come variabile personalizzata .

Più utilmente potresti eseguire il codice che controlla l'html della pagina per un ancoraggio che corrisponde al valore di location.hashe se mancante innesca un evento GA . Ciò ti darebbe quindi un rapporto GA sui collegamenti di ancoraggio di pagina non funzionanti mentre gli utenti fanno clic su di essi.


Grande idea. C'è così tanto che potrei fare con GA, ma non lo sono, probabilmente lasciando soldi sul tavolo ...
JasonBirch,

1

Non credo sia possibile vederlo nei registri di Apache. Se un file viene richiesto e pubblicato, ciò praticamente interrompe il coinvolgimento di Apache (o qualsiasi altro server). Trovare e posizionare l'ancora è qualcosa che fa il browser. Quando il browser riesce a individuare l'ancoraggio, la connessione al server è già chiusa.

Un buon controllo dei link dovrebbe prenderlo, ma è un processo manuale.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.