タグ・月別アーカイブ

Github Pages + SPA で Google Index をめぐる戦い

SPA化

標題そのものは各所のドキュメントで問題なく行えました。

blog は Markdown を json でまとめて、SPA 側で html にレンダリングしています。しかし、めんどい。

Google Search Index

atom.xml

blog 部分は、md から json 化して index を作っているので、index を作るときについでに atom.xml を作成。

sitemap.xml

面倒なので、SPA を自前 crawler で適当になめて sitemap.xml を作成。puppeteer とても良い。

https://github.com/Bugfire/create_sitemap に自分用の設定で適当に置いてあります。

Hash based router

最初は Hash based router (http://foobar.com/#/hoge/foo みたいなやつ)を使っていましたが、Hash だけ別の場合は Google 様は同じ URL とみなすので、全ページ同じ URL となり index されませんでした。

Push state router

しょうがないので普通の router を使う。

1. 404 に index.html を置く

404.html に index.html をおいたら、全てのアクセスが一個のファイルで動くじゃん俺天才、と思ってやってみましたが、動作は
しましたが、status 404 の場合は一切 index されないという悲しい結果に。

2. 404 から index.html?url 経由で開く

ちょっと調べた感じでは、これでいけるとありましたが、自分は index されませんでした。

3. あらゆる全ての箇所に index.html を置く

大変bakaです。sitemap に存在する全ての URL に index.html をコピー。いいんです、index.html はたったの 2616 バイトなんです。sitemap がとても役に立った、いやっほ!?

4. おまけ

Github Pages は、
http://foobar.com/XXX/YYY => XXX/YYY.html
http://foobar.com/XXX/YYY/ => XXX/YYY/index.html
と区別をしよう!