web-dev-qa-db-ja.com

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

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

HTTPサーバー:Apache 2

8

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

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

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

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

これを実行したら、AJAXを使用してログに記録するか、 pelms notes としてGoogleアナリティクスまたは同様のサービスに渡すことができます。

11
JasonBirch

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

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

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

3
pelms

Apacheのログでこれを見ることができるとは思わない。ファイルがリクエストされて提供されると、Apacheの関与(または他のサーバー)はほぼ終了します。アンカーを見つけて配置することは、ブラウザーが行うことです。ブラウザがアンカーを見つけるまでに、サーバーへの接続はすでに閉じられています。

優れたリンクチェッカーがそれを検出するはずですが、それは手動のプロセスです。

1
Tim Post

CSE HTML Validatorは、価格について、欠落しているアンカーをチェックします...

http://www.htmlvalidator.com/htmlval/whycseisbetter.html を参照してください

0
vmarquez