常時SSL化といいね!
2018/10/19(金)
常時SSL化すると、それまでのFacebookいいね!のカウントが引き継がれなくなってしまいます。常時SSL化後の新規コンテンツについてはもちろんいいね!がカウントされますが、それ以前のコンテンツはゼロになってしまいます。気にしなければいいのかも知れませんが、せっかくいいね!をたくさんもらって、ブログ投稿の大きな励みになっている訳で、やはり復活させたいと思います。
- 要は常時SSL化以前のコンテンツだけ、OGPメタタグのURLをhttpsからhttpに書き換える。
- Facebookのクローラーに対してのみhttpからhttpsへリダイレクトしないようにする。
この2点です。(参考)
参考ページはMovableTypeなのでこれをDrupal7に置換えます。
コンテンツ作成日で切り分ける方法もいいかと思いますが、NID(コンテンツ固有の連番)で切り分けるのが簡単かも。html.tpl.phpのheadタグにコードを追加します。
<?php if (arg(0) == 'node' && is_numeric(arg(1))): ?> <?php $nid = arg(1); ?> <?php if ($nid < SSL化する前の最後のNID): print '<meta property="og:url" content="http://DOMAIN/PATH/'.$nid.'"/>'; else: print '<meta property="og:url" content="https://DOMAIN/PATH/'.$nid.'"/>'; endif; ?> <?php endif; ?>
1行目、2行目はNIDを取得するためのおまじないです。SSL化する前の最後のNIDの場合はog:urlにhttpで、それ以降はhttpsにします。
次に.htaccessに1行、下記の3行目を追加します。
# Various rewrite rules. <ifmodule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !(Facebot|facebookexternalhit/1.1) [NC] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
3行目以外はhttpからhttpsにリダイレクトさせる設定です。3行目でFacebookのクローラーだけはリダイレクトさせないように設定します。SSL化以降はリダイレクトさせる必要がないので、Facebookのクローラーはhttpsを読んでくれます。
たぶん何日かするとFacebookのクローラーが回って来てくれて、いいね!カウントは反映されるはずですが、すぐに反映させたい場合はFacebookのシェアデバッガーで「新しい情報を取得」すればいいね!カウントが出てきます。
追記11/23: クローラーは更新してくれないようで、シェアデバッガーで1件ずつ新しい情報を取得するしかないようです。
©Uemachi Web Factory