it-swarm.cn

可以记录丢失的锚吗?

如果我有一个断开的链接,它会被记录为404.如果我有一个锚的链接并且缺少锚,我在日志中没有输入。如何找到那些破碎的锚链接,特别是如果流量来自推荐人?有没有办法配置日志记录来捕获此信息?

HTTP服务器:Apache 2

8
Dennis Williamson

无法配置URL的#fragment部分的日志记录,因为您的Web服务器永远不会看到它。来自 RFC3986

片段标识符在取消引用之前与URI的其余部分分离,因此片段本身内的标识信息仅由用户代理解除引用,而不管URI方案如何。虽然这种单独处理通常被认为是信息丢失,特别是随着资源随时间推移而对参考文献进行精确重定向,但它也有助于防止信息提供者拒绝参考作者有选择地引用资源内的信息。间接引用还为使用URI的系统提供了额外的灵活性和可扩展性,因为新媒体类​​型比新的识别方案更容易定义和部署。

这意味着Web浏览器在将URI发送到Web服务器之前基本上剥离了URI的锚点部分。因此, HTTP协议 甚至不处理片段;他们永远不会通过电线发送。

JavaScript可以使用片段(因为它是客户端)作为location.href属性的一部分。获取片段名称后,可以通过搜索该值的document.anchors []数组元素的name属性来确认它是否有效。

完成此操作后,可以使用AJAX或者,作为 pelms notes ,将其传递给Google Analytics或类似服务。

11
JasonBirch

正如其他人所说,页面锚点是浏览器操作而不是Web服务器的东西。

您可以使用一些代码将锚信息传递到您的Google Analytics计划。例如,您可以提取location.hash值并将其作为 自定义变量 传递给Google Analytics。

更有用的是,您可以运行代码来检查页面html中是否存在与location.hash的值相对应的锚点,如果它缺失则触发 GA事件 。然后,当用户点击它们时,会在断页锁定链接上为您提供GA报告。

3
pelms

我不认为可以在Apache的日志中看到这一点。如果请求并提供文件,这几乎会结束Apache的参与(或任何其他服务器)。浏览器可以找到并定位到锚点。当您的浏览器找到锚点时,与服务器的连接已经关闭。

一个好的链接检查器应该选择它,但这是一个手动过程。

1
Tim Post

CSE HTML Validator检查缺少的锚点...是否有价格。

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

0
vmarquez