如果我的链接断开了,它会被记录为404。如果我有一个指向锚点的链接,而锚点丢失了,则日志中不会出现任何条目。我如何找到那些断开的锚链接,特别是如果流量来自引荐来源网址时?有没有一种方法可以配置日志记录以捕获此信息?
HTTP服务器:Apache 2
如果我的链接断开了,它会被记录为404。如果我有一个指向锚点的链接,而锚点丢失了,则日志中不会出现任何条目。我如何找到那些断开的锚链接,特别是如果流量来自引荐来源网址时?有没有一种方法可以配置日志记录以捕获此信息?
HTTP服务器:Apache 2
Answers:
无法配置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。
CSE HTML验证程序检查丢失的锚点...的价格。