公開日:
こんにちは、チームSKYの児島です。
現在、AdSense Japanで開催されている、AdSense Big Challengeにて、SNSからの流入を増やすミッションに取組中です。
今日は、PC向けサイトとスマートフォン向けサイトを別々のURLで用意した際に起こる、SNSでのURL分散の対策をご紹介します。
このページの目次
SNSでURLが分散してしまうデメリット
PCサイトとスマホサイトを別々のURLで用意した場合、デバイスのユーザーエージェント(以下※UA)を判別して、相互にリダイレクトをかけるか、もしくは「rel=canonicalアノテーション」でURLを正規化することが推奨されています。
この方法で、Gooleには正規化したURLを伝えることが出来ますが、facebook等のSNSでユーザーがURLを直接シェアした場合、混乱を招く可能性があります。
スマホユーザーがPCサイトのURLを踏んでしまったり、またその逆もあるでしょう。
相互にリダイレクトが設定してあれば、ユーザー混乱はある程度解消できますが、事情により「rel=canonicalアノテーション」で正規化しているような場合は、ユーザーを意図したページに運ぶことが出来ません。
またSEO的な観点からも、なるべく正規化したURLの方にリンクをまとめておきたいところです。
さらに、シェアされるURLが異なると、「いいね」の数が分散されて正しく表示されない等の弊害が生じます。シェアしたURLがさらにシェアされていく事を考えると、少しもったいないですよね。
SNSでURLが分散してしまうデメリットまとめると
・ユーザーを意図したページに運ぶことが出来ない可能性がある。
・正規化したURLにリンクが集まらない。
・「いいね」数が分散されてしまう。
これらを解消するために、実際に私がやっている対策を紹介します。
OGPにシェアしたいURLを仕込む
方法は、非常に簡単です。
OGPにシェアしたいURLを仕込みます。
OGPとは、<head>~</head>に記述して、SNSに「このページは、こんな内容です」ということを伝えるための仕様です。
URLを伝えるには次のように記述します。
<META property="og:url" content="URL">
上記ソースコード「URL」の部分に正規化し(シェアしてもらいたい)URLを記述します。
全ページ一括で埋め込むには
方法は簡単とは言え、膨大なページがある場合、全ページのURLを変えて記述していくのは大変な手間になります。
そこで、phpを用いて一括(全ページ共通)で書いてしまう方法を紹介します。
例1 スマホサイトが、サブディレクトリの場合
spサイト: http://www.team-sky.com/sp/
PCサイト: http://www.team-sky.com/contents/1.html
spサイト: http://www.team-sky.com/sp/contents/1.html
このような場合、スマホサイトのURLから「sp/」を取り除いてあげれば、そのまま正規化したURLになりますので、次のように記述します。
<?php $page_url = $_SERVER["HTTP_HOST"]. $_SERVER["REQUEST_URI"]; $regular_url = str_replace('/sp/', '/', $page_url); $share_url = "http://$regular_url"; ?> <META property="og:url" content="<?php echo $share_url ?>">
1行目
$_SERVER グローバル変数を用いて、現在のページのURLを取得します。
2行目
str_replace(); 関数を用いて、「sp/」の文字例をURLから削除します。
3行目
URLに「http://」を付与します。
これで、このようなURLが↓
http://www.team-sky.com/sp/contents/1.html
このように変換されます↓
http://www.team-sky.com/contents/1.html
6行目上記で出来たURLをOGPにセットします!
次にスマホサイトが、サブドメインの場合です。
例2
spサイト: http://sp.team-sky.com/
PCサイト: http://www.team-sky.com/contents/1.html
spサイト: http://sp.team-sky.com/contents/1.html
このような場合、スマホサイトのURL「sp」を「www」に置き換えれば、そのまま正規化したURLになりますので、次のように記述します。
<?php $page_url = $_SERVER["HTTP_HOST"]. $_SERVER["REQUEST_URI"]; $regular_url = str_replace('sp', 'www', $page_url); $share_url = "http://$regular_url"; ?> <META property="og:url" content="<?php echo $share_url ?>">
試してみよう!
さて、実際どのような挙動になるか試してみたいですよね?
下にダミーページを用意しました。
http://www.team-sky.com/snstest/ogurljikkendayoyoyoyoyo.html
ヘンテコなURLをしています。
このURLをFacebookなりでシェアしてみてください。
面白いことが起こります!
というかそのために書いたのですが・・・
キャプチャ画像です。
FBの投稿フォームにこのヘンテコなURLが入っています。
が、下のタイトルや、記事の内容はこの記事ページのものになっています。
つまり、
http://www.team-sky.com/snstest/ogurljikkendayoyoyoyoyo.html
この辺なURLのページをシェアすると、この記事ページをシェアしたことになるのです。
これで、「rel=canonicalアノテーション」で正規化したを、SNSでも標準化してあげることが出来ます。
この方法は、コードを少し改変すれば、パラメータ付URLのページ等でも使う事が可能ですので、そちらの方もまた機会があれば書いてみます。