1. ホーム
  2. javascript

[解決済み] pushStateとSEO

2023-07-30 12:27:06

質問

多くの人が、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タグ)コンボが有力な解決策になりそうです。