2011-02-10 20 views
3

私は合理的に大きなギャラリーを含むウェブサイトを書いている途中です。ギャラリーの最初のページユーザはURLのついたサムネイル画像を表示します:website/gallery.php#についての一般的な質問!私はそれらを正しく使用しています

サムネイル画像をクリックすると、javaScriptがオフになっていると、 hrefを開き、gallery.php?img = 67というページに行きます。 javaScriptがオンになっていると、hrefのクリックは実行されず、代わりにajaxリクエストが実行され、大きな画像とそのテキストが表示されます。 urlがgallery.php#!img = 67に変わります。戻るボタンを押すとサムネイルに戻り、f5を押すと大きな画像がテキストとともに表示されます。誰かが#!でアドレスをコピーした場合。誰かに送信すると、同じ画像が表示されます(受信機にjavaScriptがオンになっていると仮定します)。

私の質問は、Googleが個別のギャラリーページのインデックスを作成するためにこれを正しく並べ替えましたか? Googleではインデックスを2回、1回は?img = 67で、1回は#!もしそうなら、それは悪いことでしょうか?私はサムネイルページが読み込まれると、大きな画像をプリロードするためにjavaScript/Ajaxを使用しています。私は最近hasbang ajaxyのものを使用して反撃をたくさん読んできました。ここでそれを正当化できると思っているのではないでしょうか?

+1

Googleはハッシュとその後のすべてを無視します。 – coreyward

+1

これに準拠していませんhttp://code.google.com/web/ajaxcrawling/docs/getting-started.html - 私はそのリンクの話としてクローラに応答するようにサーバーを設定しました。 – Ralph

+2

あなたはHREFの標準URLを使用していて、javascript(IMOを行う正しい方法)で#!URLを作成するだけですが、Googleはあなたの#!URLを表示せず、標準バージョンのインデックスを作成します。 –

答えて

4

Googleはあなたのリンクをたどり、?img=67ページのインデックスを作成し、それらのリンクを見ることができないため、#!ページをインデックスに登録しません。あなたは、次の手順を実行して、これらのリンクをGoogleに伝えることができます:

  1. 、ドキュメントの<head><meta name="fragment" content="!">を追加し、すべてのあなたの#!を持っているあなたのページの「HTMLスナップショット」を返すことで/?_escaped_fragment_=ため
  2. ハンドルのリクエスト<A>タグ内のリンク。

また、この機能を最大限に活用するには、大きな画像が表示されたHTMLスナップショットページを返すことによって、/?_escaped_fragment_=img=67のリクエストも処理する必要があります。 GoogleBotはJavascriptを実行しません。 #!のURLを使用すると、Googleには、という#!の代わりにが表示されるページの別のバージョン(Javascript)を取得する必要があります。

+0

私は#を入れていません!しかし、href属性のリンクはonClickイベントに含まれているので、追加されたメタタグを使用しても、グーグルはまだ#!リンクされますか? – Ralph

+1

いいえ、他のJavaScriptを無視するのと同じように、GoogleはonClickコードを無視します。それらのキーは、Googleが ''タグを見ると、 '?_escaped_fragment_ ='変数を持つ別のバージョンのページを取得するということです。そのリクエストに、 'href'に'#! 'とリンクされたページがあれば、Googleはそれを見てインデックスを作成します。 –

+1

しかし、あなたが '?_escaped_fragment_ = img = 67'リクエストに適切に反応しない限り、Googleが'#! 'リンクを索引付けすることは同様に役に立たないことに注意してください。あなたのサーバーは、通常のユーザーのように大きな画像が表示されているページで応答する必要があります。 –

1

URLのタグは、最近よく知られているブログの最新情報であり、URLには#!のタグが使用されています。

には、彼らが最もよく使用されているものと、悪いものとなる可能性があるものの説明があります。私はあなたのギャラリーでの使用はかなり有効だと思います。要するに

http://lifehacker.com/#!5753509/hello-worldのようなURLは... Googleが書き換えられ、およびその他の互換性のあるWeb-スパイダーhttp://lifehacker.com/?_escaped_fragment_=5753509/hello-worldなど...

Googleはインデックスそれらを二回、しかし、あなたはまた、canonicalメタタグを使用することができますそれが「正式な」コピーが何であるかを確実に知るためです。

+0

正式なメタタグを指摘してくれてありがとう、サイトの非javaScriptバージョンへの深いリンクからGoogleを防ぐ良い方法でなければなりません。 – Ralph

+0

_escaped_fragmented_部分のあるURLがユーザーに表示されるシナリオはありません。 Googleは#を使用しています。検索結果に表示され、開発者はページ上のリンクでも同様に使用するよう指示されます。 GoogleBotとサーバーだけが_escaped_fragment_を使用しています – evanmcd

1

可能な解決策(http://isolani.co.uk/blog/javascript/BreakingTheWebWithHashBangsで提案されているように)は、通常のリンクを使用して#に翻訳することです! OnClick()イベントで発生します。これは、サイトが定期的なリンクを表示し、shitty#!を表示しないようにします。

サーバーは両方のバージョン(Ajaxバージョンと正規バージョン)をサポートする必要があるため、余計な作業が必要になりますが、その価値はあると思います。これらの#!とても醜いです..

関連する問題