社長BLOG

AngularJS Google Facebookボットから検索されるようにする

AngularJS楽しいですね。MVWはいいですね。MVCに比べて無理が少ないと思います。ピンときました。
サイトの構築は本当にサクサクできました。

できたサイトは、PNE.club アマチュアクラブ活動のポータルサイトです。

201409031500

フロント:HTML5 Bootstrap3 AngularJS
DB:Firebase.com(JSON データベース)
バックエンド:Twitterデータを定期的に取得するバッチ処理(PHP)

まだシンプルなもんだけど、レスポンシブ、管理簡単、アプリなどに拡張もし易い良い構成になりました。

201409091419

いいことづくめのこの構成、落とし穴がありました。

「Google Facebookのボットが正しくクロールしてくれない」

です。これは参りました。なんとか解決したので、解決方法を一直線に共有しておきます。

今回のサイトAngularJSを使っているけどシングルページアプリケーションではない。コンテンツごとに個別ページがあるオーソドックスなスタイルです。その範囲で役に立てばいいかなと思います。

問題

Google Facebookなどのボットからのアクセスは、JavaScriptを解釈せずにコンテンツを取得していく。したがって、コンテンツの取得やレンダリングなどを含めて過度にJavaScriptを利用すると、ボットにサイト内情報を提供できなくなる=>コンテンツ無しページと評価されてしまう=>検索に引っかからなくなる。

201408182107

こんな風にインデックス化されてしまうわけです。

解決方針

・ボットからのアクセスには専用のHTMLを返すようにする
・ボットを識別するUserAgentをApache .htaccessで見分け、通常アクセスとは違う特別なコンテンツを出力する
・ボットにはそっちをクロールしてもらう

やりかた

作業1、Prerender.ioをレンタルする。

Prerender.ioはAngularJSのようにJavaScriptでレンダリングされるWEBサイトをJavaScriptが有効なまま取得し、そのキャッシュをつくってくれるサービスです。人間の見た目と同じょうなHTMLを保存してくれます。
200ページまで無料。追加ページもそれほど高くないので、即効で契約。

サービスから発行されたトークンを、HTTPヘッダーとして出力するだけ。

201409091437

今回はフレームワークを使っていないので、Apache .htaccess用の設定を選択しました。

作業2、Prerender.ioの指示どおりに、.htaccessを設定する。
Prerender.ioでは高レベル、低レベルの2種類の設定方法が用意されているようです。
高レベルな方は、Node.jsやRails Symfony2 ZendFrameworkなどのフレームワークにPrerenderライブラリを組み込み、自動的にキャッシュの制御を行います。
今回はフレームワークを使ってないので、低レベルな方を選択。

.htaccessに このgistを書き込みます。

https://gist.github.com/thoop/8072354

 

このhtaccessは、「ボットのUserAgentが来たら、通常のコンテンツじゃなくPrerenderにキャッシュされたデータを返せな」
と指示しています。

作業3、動作確認

まずはChromeでUserAgentをボットに偽装しアクセス。通常コンテンツではなく、Prerender.ioがレンダリングしたHTMLが表示されていることを確認。なにせキャッシュなのでわかりにくいですが、キャッシュ側のソースコードを開いて、HTMLタグを確認するとわかります。(JavaScriptがなくなっているので)

GoogleのWEBマスターツールを使って、GoogleBotとしてクロールしてもらいます。

201409091444

ここで正しくレンダリングされていたらOKです。Googleインデックスへの登録を申請します。

作業4、解決

201409082217
▼Google検索結果

201409091450
▼Facebook ボット

バッチリクロールできてますね。解決です。

最後に

自社サービスなので、新しい技術ばかりのびのびと試しちゃってます。今回は壁を回避する手段があってよかったです。

OpenPNE�~�蓈���񋟃T�[�r�X�̂��m�点

  • ��K�̓z�X�e�B���O
  • �Z�p�T�|�[�g
  • �J�X�^�}�C�Y
  • OpenPNE Manager
  • ���q���܃T�|�[�g

ページの先頭に戻る