As âncoras ausentes podem ser registradas?

8

Se eu tiver um link quebrado, ele será registrado com um 404. Se eu tiver um link para uma âncora e a âncora estiver ausente, não recebo uma entrada no log. Como posso encontrar esses links de âncora quebrados, especialmente se o tráfego é proveniente de um referenciador? Existe uma maneira de configurar o log para capturar essas informações?

Servidor HTTP: Apache 2

Pausado até novo aviso.
fonte
+1, sempre me perguntei se havia uma maneira prática (automagica) de fazer isso.
Tim Post

Respostas:

11

É impossível configurar o log da parte #fragment da URL porque o servidor da Web nunca a vê. From RFC3986

o identificador de fragmento é separado do restante do URI antes de uma desreferencia e, portanto, as informações de identificação no próprio fragmento são desreferenciadas apenas pelo agente do usuário, independentemente do esquema do URI. Embora esse tratamento separado seja frequentemente considerado uma perda de informações, principalmente para o redirecionamento preciso de referências à medida que os recursos se movem ao longo do tempo, também serve para impedir que os provedores de informações neguem aos autores de referência o direito de se referirem às informações dentro de um recurso seletivamente. A referência indireta também fornece flexibilidade e extensibilidade adicionais aos sistemas que usam URIs, pois novos tipos de mídia são mais fáceis de definir e implantar do que novos esquemas de identificação.

O que isso significa é que o navegador da Web basicamente retira a parte âncora do URI antes de enviá-lo ao servidor da Web. O protocolo HTTP nem lida com fragmentos por causa disso; eles nunca são enviados por fio.

Fragmentos estão disponíveis para JavaScript (porque é do lado do cliente) como parte da propriedade location.href. Depois de obter o nome do fragmento, você pode confirmar que ele é válido pesquisando a propriedade name dos elementos da matriz document.anchors [] para esse valor.

Depois de fazer isso, ele pode ser registrado usando o AJAX ou, como observa o artigo , passado para o Google Analytics ou serviços similares.

JasonBirch
fonte
Se a âncora for apenas <a name="blah"></a>você não poderá determinar a existência com getElementByID; pode funcionar no IE (não tenho certeza se ainda é o caso no 8), mas se você quiser fazer isso, sugiro adicionar o ID também.
Cebjyre
Hmm. Gapped um pouco lá :) Sim, adicionar o ID é mais eficiente, ou você pode percorrer o DOM por nome ou tagname. Eu vou consertar isso.
21710 JasonBirch
Gostaria de saber se html5 ping âncora poderia ser usado para esse fim.
Kzqai
3

Como já foi dito, as âncoras de páginas são algo em que o navegador opera e não o servidor da web.

Você pode usar algum código para passar as informações da âncora para o seu programa do Analytics. Por exemplo, você pode extrair o location.hashvalor e passá-lo ao Google Analytics como uma variável personalizada .

Mais útil, você pode executar um código que verifique o html da página em busca de uma âncora que corresponda ao valor de location.hashe, se estiver faltando, dispara um evento do GA . Isso forneceria um relatório do GA sobre links de âncora de página quebrados, conforme os usuários clicam neles.

peles
fonte
Boa ideia. Há tanta coisa que eu poderia estar fazendo com o GA, mas não estou, provavelmente deixando dinheiro em cima da mesa ...
JasonBirch
1

Eu não acho que é possível ver isso nos logs do Apache. Se um arquivo for solicitado e servido, isso praticamente encerrará o envolvimento do Apache (ou qualquer outro servidor). Encontrar e posicionar na âncora é algo que o navegador faz. Quando o seu navegador consegue localizar a âncora, a conexão com o servidor já está fechada.

Um bom verificador de link deve buscar isso, mas esse é um processo manual.

Tim Post
fonte