Facebook のアプリからこの URL を共有しようとしています: http://www.example.com/#!v;id=NH1NlYov3bKJ
ただし、自動的に次のように置き換えられます: http://www.example.com/?_escaped_fragment_=v%3Bid%3DNH1NlYov3bKJ
この URL は間違っており、Web ページから正しいタイトル、説明、画像が取得されていません。私に何ができる?ありがとう
Facebook のアプリからこの URL を共有しようとしています: http://www.example.com/#!v;id=NH1NlYov3bKJ
ただし、自動的に次のように置き換えられます: http://www.example.com/?_escaped_fragment_=v%3Bid%3DNH1NlYov3bKJ
この URL は間違っており、Web ページから正しいタイトル、説明、画像が取得されていません。私に何ができる?ありがとう
URL にシーケンスが含まれているのはなぜ#!
ですか? 変更できますか?ajax コンテンツはクロール可能ではないため、シーケンスはこのコンテンツをクロール可能にするための (Google) 仕様の一部であり、現在ではほとんどのインターネットの大物がそれを使用しています。
それはどのように機能しますか?のような URL があるとしますwww.example.com/folder#!id=4
。これは、URL の一部のコンテンツが ajax によって配信されることを意味し、ハッシュと呼ばれる id=4 の情報に依存します。Google クローラーは代わりにページを読み取ろうとしますがwww.example.com/folder?_escaped_fragment_=id=4
、仕様によると、クローラーは同じページの ajax バージョンがないことを期待しています。
私はそれがまったく好きではありませんが、うまくいきます。それが、Twitter、Facebook、Groveshark、および他の多くの大きな魚がこの仕様を使用している理由です。したがって、Facebook (100% Ajax ページ) で Groveshark の曲を共有すると、Facebook は同じページの非 Ajax バージョンを見つける場所を認識します。しかしそのため、Facebook もあなたの URL を変更しようとしています。
#!
Google のガイドラインに従って、エスケープされたフラグメント クエリの使用を停止するか、処理します。
ウェブマスター向けの Google の「完全な仕様」を参照してください。
感嘆符で始まるハッシュ フラグメントを含む各 URL は#! URL . どの URL にも、最大で 1 つのハッシュ フラグメントを含めることができることに注意してください。それぞれのきれいな (#!) URL には、対応する醜い (_escaped_fragment_) URL があり、次の手順で導出されます。
- ハッシュ フラグメントはクエリ パラメータの一部になります。
- ハッシュ フラグメントは、その前に _escaped_fragment_= を付けることにより、クエリ パラメータで示されます。
- ハッシュ フラグメントがクエリ パラメータの一部になると、一部の文字がエスケープされます。これらの文字を以下に示します。
- URL の他のすべての部分 (ホスト、ポート、パス、既存のクエリ パラメータなど) は変更されません。
この場合、Facebook は最初にこのきれいから醜い (またはクライアント動的からクロール可能) のステップを実行しています。_escaped_fragment_
フォームは繰り返し可能なスナップショットになる必要があることに注意してください。
ハッキーは知っていますが、.htaccessとmod_rewriteを使用して_escaped_fragement_urlをキャッチしようとしています。私の場合、これは純粋な.html / .jsシングルページWebアプリを作成し、検索エンジンがスナップショットを必要とするときにキャッチする必要があるためですが、同じ技術を使用して醜い_escaped_fragment_を正しい形式に書き換えることができますあなたのサイトのために。
もう 1 つのアイデアは、共有する前に、http: //goo.gl/などのショートカット サービスを介して正しい URL をプッシュすることです。