不足しているアンカーをログに記録できますか?


8

リンクが壊れていると、404でログに記録されます。アンカーへのリンクがあり、アンカーが見つからない場合、ログにエントリがありません。特にトラフィックがリファラーから来ている場合、これらの壊れたアンカーリンクを見つけるにはどうすればよいですか?この情報を取得するようにログを構成する方法はありますか?

HTTPサーバー:Apache 2


+1、それを行うための実用的な(オートマジック)方法があるかどうか、私はよく疑問に思いました。
Tim Post

回答:


11

URLの#fragment部分のログを構成することはできません。これは、Webサーバーではログが認識されないためです。RFC3986から

フラグメント識別子は逆参照の前に残りのURIから分離されているため、URIスキームに関係なく、フラグメント自体内の識別情報はユーザーエージェントによってのみ逆参照されます。この個別の処理は、多くの場合、情報の損失であると認識されますが、特にリソースが時間とともに移動するときに参照を正確にリダイレクトする場合、情報提供者が参照作成者がリソース内の情報を選択的に参照する権利を拒否することを防ぐのにも役立ちます。新しいメディアタイプは、新しい識別方式よりも定義と展開が容易であるため、間接参照は、URIを使用するシステムに追加の柔軟性と拡張性を提供します。

これが意味することは、Webブラウザは基本的にURIのアンカー部分を取り除いてからWebサーバーに送信するということです。このため、HTTPプロトコルはフラグメントも処理しません。それらはネットワーク経由で送信されることはありません。

フラグメントは、JavaScriptで(クライアント側であるため)location.hrefプロパティの一部として使用できます。フラグメント名を取得したら、document.anchors []配列要素のnameプロパティでその値を検索して、フラグメント名が有効であることを確認できます。

これを実行すると、AJAXを使用してログに記録したり、pelmsメモとしてGoogleアナリティクスまたは類似のサービスに渡したりできます。


アンカーが単にである場合、<a name="blah"></a>getElementByIDで存在を判別できません。IEでも機能する可能性がありますが(8でも問題ないかどうかはわかりません)、これを行う場合は、IDも追加することをお勧めします。
Cebjyre

うーん。少しギャップがあります:)はい、IDを追加するのが最も効率的です。または、名前またはタグ名でDOMをウォークすることもできます。直します。
JasonBirch

html5アンカーpingがこの目的に使用できるかどうか疑問に思います。
Kzqai

3

他の人が言ったように、ページアンカーはブラウザがWebサーバーではなく操作するものです。

いくつかのコードを使用して、アンカー情報をAnalyticsプログラムに渡すことができます。たとえば、location.hash値を抽出して、カスタム変数としてGoogleアナリティクスに渡すことができます

より便利なのは、ページのhtmlの値に対応するアンカーをチェックし、location.hashそれがない場合にGAイベントをトリガーするコードを実行することです。これにより、ユーザーがクリックしたときに、壊れたページのアンカーリンクに関するGAレポートが表示されます。


いい案。GAでできることはたくさんありますが、そうではありません。おそらくテーブルにお金を残します...
JasonBirch 2010

1

Apacheのログでこれを確認することは不可能だと思います。ファイルが要求されて提供されると、Apache(またはその他のサーバー)の関与はほぼ終了します。アンカーの検索と配置は、ブラウザが行うことです。ブラウザがアンカーを見つけるまでに、サーバーへの接続はすでに閉じられています。

良いリンクチェッカーはそれを拾うべきですが、それは手動のプロセスです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.