Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
31
Help us understand the problem. What is going on with this article?
@hkusu

WEBサイトのURLがFacebookでシェアorいいねされた場合の挙動(OGP)

More than 5 years have passed since last update.

WEBサイトのURLがFacebook上でシェア、または、サイトに設置された[いいね]ボタンを押された際、Facebookはどのように下記の例のようなキャプチャを表示しているかというと、

スクリーンショット 2014-02-17 21.55.16.png

Facebookのクローラーが裏側でサイトにアクセスしに来ています(自分でサイトを作っている場合は、WEBサーバのアクセスログをtailしながら確認してみると良く分かる)。
※ただし同じURLは一定期間、Facebook側でキャッシュする模様。

私が試した際のFacebookクローラーのユーザエージェントは次の通り。

facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)

もしかしてFacebook PC版/スマホ版/アプリ版とかで違うのかも?

自分でサイトを作っている場合、Facebook向けにいい感じにキャプチャ(キャプチャという呼び方でいいのか?)されるようにするには、各ページのHTMLでOGP用のmetaタグで適用される画像や文言を指定します。

OGPの公式サイト:http://ogp.me

スクリプト言語等で動かしている動的なサイトの場合は、各ページでふさわしい画像や文言を設定すればOKなのですが、「面倒なのでサイト内のどのURLがシェアされても一律で同じ表示でいいよ」という場合は、全ページに同じmetaタグを仕込むか、もしくはWEBサーバがApacheであれば、次のようにFacebookクローラーを判定して、クローラー用のページへ飛ばしてしまうという方法があります。

.htaccess
RewriteEngine on

RewriteCond %{HTTP_USER_AGENT} facebookexternalhit
RewriteRule .* /page_for_facebook.html [L]

page_for_facebook.html にOGPタグだけのHTMLを用意しておけば、どのURLがシェアされた場合でもこのOGPで指定されたキャプチャが適用されます。

31
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
hkusu
Software Engineer @ Yumemi, Inc JavaScript / Android / Kotlin / AWS etc..
yumemi
みんなが知ってるあのサービス、実はゆめみが作ってます。スマホアプリ/Webサービスの企画・UX/UI設計、開発運用。Swift, Kotlin, PHP, Vue.js, React.js, Node.js, AWS等エンジニア・クリエイターの会社です。Twitterで情報配信中https://twitter.com/yumemiinc

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
31
Help us understand the problem. What is going on with this article?