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
Help us understand the problem. What is going on with this article?

FacebookでシェアするOGP画像を動的に書き換える

More than 1 year has passed since last update.

Facebookでもシェアするぞ

以前書いたTwitterのogpに関わる話に続けて書こうと思ってた話を。
最近の若い子はFacebook使ってないらしいですが…シェアするっていうとtw,fb,insta,line辺りが主流かと認識してますがどうなんでしょうね。

おさらい

Twitterではパラメータをぶら下げて.htaccessでクローラ判定して〜って流れでした。
同様にFacebookもそれで行けるやろって思って組み込もうとした矢先、コードが以下のようになってたわけです。

<a href="https://www.facebook.com/sharer/sharer.php?u=https://tebasaki.mushamusha.jp?chicken=broiler" target="_blank">

あれれ〜おかしいぞ〜?なんですよね。
クエリにクエリが付いたURLを設定しちゃってるのでイミフな状況が生まれてるんです。
これではうまく動かないのでどうしたものやらと小一時間悩みました。

で考えたのが以下

<a href="https://www.facebook.com/sharer/sharer.php?u=https://tebasaki.mushamusha.jp/broiler/" target="_blank">

パラメータを一つの階層にしてしまえ!
で、最後の文字列を.htaccess側でパラメータにしてリダイレクトしてしまいしょう。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_USER_AGENT} (facebookexternalhit/[0-9]|Twitterbot)
    RewriteCond %{REQUEST_URI} !(^/ogp.php)
    RewriteRule ^(.*)/$ ogp.php?chicken=$1 [L]
</IfModule>

受け側の動き

ogp.phpはもはや説明要らんと思いますがこんな感じです。

ogp.php
<?php
    $chicken = htmlspecialchars($_GET["chicken"],ENT_QUOTES);
    $ogpUrl = "https://tebasaki.mushamusha.jp/".$chicken."/ogp.png";

おわり。

SHIN_DEVELOP
サーバーサイドのぷろぐらまー
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