私は、この主題に関する Google のドキュメントと数え切れないほどのブログ投稿に目を通しましたが、日付とソースによっては、矛盾する情報がいくつかあるようです。この貧しい農民にあなたの知恵を注いでください。そうすれば、すべてがうまくいくでしょう。
視聴者の大部分がインターネット接続が不十分なアフリカ諸国から来ており、クライアントが適切なインフラストラクチャを購入する余裕がない場合、無料でウェブサイトを構築しています。そのため、すべてを静的な html ファイルとして提供することにしました。JavaScript が使用可能な場合は、ユーザーがナビゲーション リンクをクリックした場合に、ページ コンテンツを DOM に直接ロードして、ページ全体のロードによるオーバーヘッドを防ぎます。
クライアント側のルートは次のようになります。
//domain.tld/#!/page
私の最初の質問は; Googlebot はそれを次のように翻訳しますか:
//domain.tld/_escaped_fragment_/page
または//domain.tld/?_escaped_fragment_=/page
?
私は php で単純なサーバー側ルーターを作成しました。これは、googlebot 用に要求されたページを構築します。私の計画は、にリダイレクト//d.tld/_escaped_fragment_/page
することでした//d.tld/router/page
。
しかし、Google の「Fetch as Googlebot」を使用すると (初めて追加する可能性があります)、ページ上のリンクを認識しないようです。「成功」を返すだけで、メイン ページの html が表示されます (更新: Fetch as Googlebot を//d.tld/#!/page
ポイントすると、_escaped_fragment_ マジックを実行せずにメイン ページのコンテンツが返されます)。これは私の2番目の質問に私を導きます:
ハッシュバン リンクを使用する場合、Googlebot がクロールするために特定の構文に従う必要がありますか?
私のリンクは HTML で次のようになります。
<a href="#!/page">Page Headline</a>
Update1: それで、Fetch as Googlebot に//d.tld/#!/page
アクセス ログにこれが表示されるように依頼"GET /_escaped_fragment_/page HTTP/1.1" 301 502 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
すると、設定した 301 に従っていないようで、代わりにメイン ページが表示されます。代わりに 302 を使用する必要がありますか? これは私が使用しているルールです:RedirectMatch 301 /_escaped_fragment_/(.*) /router/$1
更新 2: 計画を変更しました。JavaScript 以外のフォールバック戦術の一部として googlebot を説明します。これで、すべてのリンクがルーターを指し、javascript を使用して onLoad に/router/page
変更されました。/#!/page/
誰かが他の人を助けるかもしれない素晴らしい解決策を持っている場合に備えて、私は質問を少し開いたままにしています.