Facebookからアクセス時にmetaタグが読み込めないでござるぅ!

なぜか変な現象でハマってしまったので書き留めておきます。とあるWebサイトをリリースしました。PHPプログラムは正常に動いており、アクセスも正常。もちろん、文字化けやおかしい動きなどしていない。…なのに、Facebookの「いいね!」を設置してみたところ、ページタイトルやmetaタグが読み込まれない(反映されない)現象が起きてしまいました。最悪、URLさえあれば「いいね!」は出来るので、致命的とは言えないのですが、「○○さんがhttp://~~~/xxxxx/について「いいね!」と言っています。」と表示されてしまい、なんかURLそのまま表示されるのが気持ち悪いですし、しょぼいです。
原因を色々と探ってみました…。(ちなみに確認してたページはPHPプログラムで表示するページでした)

  • ブラウザでアクセスしてもエラーとは判断されない
  • 文字化けもしていない(日本語UTF8で表示される)
  • 別サーバーだと、同じような現象は起きていない
  • ローカル環境(開発環境)のは正常にmetaタグなどが読み込まれる
    • よって、記述ミスなどではない
  • 拡張子を「.html」にして直接アクセスすると正常に表示される
    • よってPHPプログラムを通じて表示しようとした場合のみ発生するのかも
  • そのhtmlファイルを「.php」にしてみると、またmetaタグが読み込まれなくなる
    • PHPが原因で確定
    • ローカル環境では正常に動いていた事から、サーバー+PHPが原因と確定

更にはFacebookへバグ報告をしてしまいました(すいません^^;)。
それくらい謎の現象に見舞われたのです。
友人id:Nullyへ相談し、ヘッダが怪しいんじゃないか!という導きが出たので調べてみました!色々見比べてみると、おお!それがビンゴ!!ローカルのXAMPP環境と、CentOSのApacheだと、ヘッダの中身も違いますが、怪しい箇所を発見!

Content-Type:text/html; charset=pass

このサーバーのphp.iniを見てみると、

; PHP’s default character set is set to empty.
; http://www.php.net/manual/en/ini.core.php#ini.default-charset
;default_charset = “iso-8859-1”
default_charset=pass

と書かれていました。いや、俺が書いたのかも知れんけどw

; PHP’s default character set is set to empty.
; http://www.php.net/manual/en/ini.core.php#ini.default-charset
;default_charset = “iso-8859-1”
;default_charset=pass

と、コメントアウトして見事解決!ブラウザでは確認出来ないバグはホントきつかったです…。
なお、コチラのサイトを利用致しました。
ヘッダーまるみえ君 | HTTPヘッダー&リダイレクト先チェックツール
フェイスブックのmetaタグ確認は、コチラを利用しましょう!
デバッガー – Facebook開発者

スポンサードリンク

コメントを残す

メールアドレスが公開されることはありません。