[解決済み] pushStateとSEO
質問
多くの人が、hashbangではなくpushStateを使えと言っています。
私が理解できないのは、hashbangを使わずにどうやって検索エンジンに優しくするのか、ということです。
おそらく、あなたのpushStateコンテンツはクライアントサイドのJavaScriptコードによって生成されているのでしょう。
シナリオはこのようになります。
私は
example.com
. 私のユーザがリンクをクリックすると
href="example.com/blog"
pushStateはクリックをキャプチャし、URLを更新し、どこかからJSONファイルを取得し、コンテンツエリアにブログ記事のリストを作成します。
ハッシュバングを使用すると、google は静的コンテンツを取得するために escaped_fragment URL に移動することを知っています。
pushStateでは、GoogleはJSONをロードし、その後テンプレートを作成するためにJavaScriptコードを使用できないので、ただ何も見えません。
私が知る唯一の方法は、サーバー側でテンプレートをレンダリングすることですが、それはアプリケーション層をクライアントにプッシュすることの利点を完全に否定するものです。
つまり、pushState はクライアント側アプリケーションにとってまったく SEO フレンドリーではないということでしょうか?
どうすれば解決するのか?
URLにハッシュバンを入れたくない人のために、Googleが提案しているmetaタグを使うのはどうでしょう。
<meta name="fragment" content="!">
詳しくはこちらをご覧ください。 https://developers.google.com/webmasters/ajax-crawling/docs/getting-started
残念ながら、Nicole は、私が OP が抱えていると考えていた問題を明確にしていないと思います。問題は、ハッシュ バングを使用しない場合、コンテンツを提供する相手がわからないということです。Pushstateは、これを解決してくれません。私たちは、検索エンジンがエンドユーザーに、フォーマットされていないJSONを吐き出すURLに移動するよう指示することを望んでいません。その代わりに、AJAXでデータを取得するURL(他のURLへの呼び出しを誘発する)を作成し、私たちが望む方法でユーザーにそれを提示します。ユーザーが人間でない場合は、代替手段としてhtmlスナップショットを提供し、検索エンジンが、要求されたデータが見つかると期待されるURLへ、人間のユーザーを適切に誘導できるようにします(しかも見栄えのよい形で)。しかし、究極の課題は、ユーザーの種類をどのように判断するかということです。確かに私たちは、.htaccessなどを使って、検知した検索エンジンのボット用にURLを書き換えることはできるかもしれませんが、これがどれだけ完全で将来性のあるものなのかはわかりません。また、Googleがこのようなことをするとペナルティを与える可能性もありますが、十分に調査したわけではありません。ということで、(pushstate + googleのmetaタグ)コンボが有力な解決策になりそうです。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] URLを新しいタブで開く(新しいウィンドウではない)
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] Javascript 空の配列の削減
-
[解決済み] これは純関数ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] Node.jsでbase64エンコードされた画像をAmazon S3へアップロードする
-
[解決済み] Angularjs - 現在の日付を表示する
-
[解決済み] JavaScriptで、ある文字列が別の文字列の中に出現するすべてのインデックスを見つけるにはどうすればよいですか?
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] javascript includes() 大文字小文字を区別しない
-
[解決済み] サブドメインにまたがってlocalStorageを使用する
-
[解決済み] moment.jsでミュータビリティを回避するには?
-
[解決済み] JavaScriptでDIVを表示・非表示にするには?