¿Se pueden registrar las anclas faltantes?

8

Si tengo un enlace roto, se registra con un 404. Si tengo un enlace a un ancla y falta el ancla, no obtengo una entrada en el registro. ¿Cómo puedo encontrar esos enlaces de anclaje rotos, especialmente si el tráfico proviene de un referente? ¿Hay alguna forma de configurar el registro para capturar esta información?

Servidor HTTP: Apache 2

Pausado hasta nuevo aviso.
fuente
+1, a menudo me he preguntado si había una forma práctica (automática) de hacerlo.
Tim Post

Respuestas:

11

Es imposible configurar el registro de la parte #fragmento de la URL porque su servidor web nunca lo ve. De RFC3986

el identificador de fragmento se separa del resto del URI antes de una desreferencia, y por lo tanto la información de identificación dentro del fragmento en sí es desreferenciada únicamente por el agente de usuario, independientemente del esquema de URI. Aunque a menudo se percibe que este manejo separado es una pérdida de información, particularmente para la redirección precisa de las referencias a medida que los recursos se mueven con el tiempo, también sirve para evitar que los proveedores de información nieguen a los autores de referencia el derecho de referirse a la información dentro de un recurso selectivamente. La referencia indirecta también proporciona flexibilidad y extensibilidad adicionales a los sistemas que usan URI, ya que los nuevos tipos de medios son más fáciles de definir e implementar que los nuevos esquemas de identificación.

Lo que esto significa es que el navegador web básicamente elimina la parte de anclaje del URI antes de enviarlo al servidor web. El protocolo HTTP ni siquiera trata con fragmentos debido a esto; nunca se envían por cable.

Los fragmentos están disponibles para JavaScript (porque es del lado del cliente) como parte de la propiedad location.href. Una vez que obtenga el nombre del fragmento, puede confirmar que es válido buscando en la propiedad de nombre de los elementos de la matriz document.anchors [] para ese valor.

Una vez que haya hecho esto, puede registrarse utilizando AJAX o, como notas de Pelms , pasar a Google Analytics o servicios similares.

JasonBirch
fuente
Si el ancla es justa <a name="blah"></a>, no podrá determinar la existencia con getElementByID; podría funcionar en IE (no estoy seguro de si sigue siendo el caso en 8), pero si desea hacer esto, le sugiero agregar también la identificación.
Cebjyre
Hmm Ahí está un poco :) Sí, agregar la identificación es más eficiente, o puede recorrer el DOM por nombre o nombre de etiqueta. Lo arreglaré
JasonBirch
Me pregunto si html5 anchor ping podría usarse para este propósito.
Kzqai
3

Como han dicho otros, los anclajes de página son algo en lo que opera el navegador en lugar del servidor web.

Puede usar algún código para pasar la información de anclaje a su programa de Analytics. Por ejemplo, podría extraer el location.hashvalor y pasarlo a Google Analytics como una variable personalizada .

De manera más útil, podría ejecutar un código que verifique en la página html un ancla que corresponda al valor de location.hashy, si falta, desencadena un evento GA . Eso le daría un informe de GA sobre enlaces de página rotos cuando los usuarios hagan clic en ellos.

pelmas
fuente
Gran idea. Hay muchas cosas que podría estar haciendo con GA, pero no lo estoy, probablemente dejando dinero sobre la mesa ...
JasonBirch
1

No creo que sea posible ver esto en los registros de Apache. Si se solicita y sirve un archivo, eso prácticamente termina la participación de Apache (o cualquier otro servidor). Encontrar y posicionarse en el ancla es algo que hace el navegador. Para cuando su navegador llegue a localizar el ancla, la conexión al servidor ya está cerrada.

Un buen verificador de enlaces debería recogerlo, pero ese es un proceso manual.

Tim Post
fuente