是否可以记录丢失的锚点?


8

如果我的链接断开了,它会被记录为404。如果我有一个指向锚点的链接,而锚点丢失了,则日志中不会出现任何条目。我如何找到那些断开的锚链接,特别是如果流量来自引荐来源网址时?有没有一种方法可以配置日志记录以捕获此信息?

HTTP服务器:Apache 2


+1,我经常想知道是否有一种实用的方法(自动)。
蒂姆·波斯特

Answers:


11

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

片段标识符在取消引用之前与URI的其余部分分开,因此,片段本身中的标识信息仅由用户代理取消引用,而与URI方案无关。尽管通常认为这种单独的处理是信息的丢失,尤其是当资源随时间推移进行准确的重定向时,它尤其可防止信息提供者拒绝参考作者有选择地参考资源内信息的权利。间接引用还为使用URI的系统提供了额外的灵活性和可扩展性,因为新的媒体类型比新的标识方案更容易定义和部署。

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

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

一旦你做到了这一点,它可以使用AJAX或记录下来,作为pelms音符,传递给谷歌Analytics(分析)或类似的服务。


如果锚点只是<a name="blah"></a>您将无法使用getElementByID确定存在;它可能在IE中有效(我不确定在8中是否仍然如此),但是如果您要执行此操作,建议您也添加ID。
Cebjyre

嗯 有一点差距:)是的,添加id最有效,或者您可以按名称或标记名遍历DOM。我会解决的。
JasonBirch

我想知道html5锚ping是否可以用于此目的。
Kzqai 2011年

3

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

您可以使用一些代码将锚点信息传递到Analytics程序。例如,您可以提取location.hash值并将其作为自定义变量传递给Google Analytics(分析)。

更有用的是,您可以运行代码以检查页面html中是否有对应于的锚点的代码,location.hash如果缺少该锚点,则会触发GA事件。这样,当用户单击链接时,就会为您提供有关损坏的页面锚链接的GA报告。


好点子。我对GA可以做很多事情,但
事实

1

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

一个好的链接检查器应该可以解决这个问题,但这是一个手动过程。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.