リンクが壊れていると、404でログに記録されます。アンカーへのリンクがあり、アンカーが見つからない場合、ログにエントリがありません。特にトラフィックがリファラーから来ている場合、これらの壊れたアンカーリンクを見つけるにはどうすればよいですか?この情報を取得するようにログを構成する方法はありますか?
HTTPサーバー:Apache 2
リンクが壊れていると、404でログに記録されます。アンカーへのリンクがあり、アンカーが見つからない場合、ログにエントリがありません。特にトラフィックがリファラーから来ている場合、これらの壊れたアンカーリンクを見つけるにはどうすればよいですか?この情報を取得するようにログを構成する方法はありますか?
HTTPサーバー:Apache 2
回答:
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も追加することをお勧めします。
他の人が言ったように、ページアンカーはブラウザがWebサーバーではなく操作するものです。
いくつかのコードを使用して、アンカー情報をAnalyticsプログラムに渡すことができます。たとえば、location.hash
値を抽出して、カスタム変数としてGoogleアナリティクスに渡すことができます。
より便利なのは、ページのhtmlの値に対応するアンカーをチェックし、location.hash
それがない場合にGAイベントをトリガーするコードを実行することです。これにより、ユーザーがクリックしたときに、壊れたページのアンカーリンクに関するGAレポートが表示されます。
CSE HTMLバリデーターは、不足しているアンカーを価格でチェックします。
http://www.htmlvalidator.com/htmlval/whycseisbetter.htmlを参照してください