1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Movable Typeクラウド版でのogpの記述のコツ

Posted at

クラウド版Movable Typeをステージング環境として使用している場合、本番環境へファイルを配信する際にhtml上のURLがドキュメントルートからのパスに置換されてしまうため、例えばog:urlcontent<mt:CanonicalURL>を指定しても本番環境ではドメイン部分がごっそり抜けてしまう。

配信される HTML ファイルに含まれている URL (サイト URLと同じ URL のみ)は、/ で始まる相対パスに自動的に置換されます。
サーバー配信 | CMSプラットフォーム Movable Type ドキュメントサイト

そのためphpを利用し以下のように対応した。

htaccessの設置

htmlでもphpが動作するように

AddType application/x-httpd-php .php .html
もしくは
AddHandler application/x-httpd-php .php .html

と記述した.htaccessファイルを作成し本番環境にアップ。

mtのテンプレート内にphpを記述

以下をHTMLヘッダーなどのテンプレートに記述。

まず変数にドメインを格納。

<?php $url = empty($_SERVER["HTTPS"]) ? "http://" : "https://"; $url .= $_SERVER["HTTP_HOST"]; ?>

次に該当箇所にechoで表示。

<meta property="og:url" content="<?php echo $url; ?><mt:CanonicalURL>">

出力結果

ステージング環境のドメインが example.movabletype.biz
本番環境のドメインが www.example.com の場合、
ステージング環境では

<meta property="og:url" content="http://example.movabletype.biz/http://example.movabletype.biz/2017/12/post.html">

にように出力されてしまうが、配信されるタイミングでステージング環境のドメインは削除される&htmlを生成する際にphpで本番環境のドメインを取得するため、結果的に以下のように出力される。

<meta property="og:url" content="http://www.example.com/2017/12/post.html">

クラウド版Movable Typeは標準の検索機能も使えないし使う案件を選びますね。
配信機能については、相対パスへの書き換えではなく本番環境のドメインに置換するオプションとか用意してくれれば楽なのにな、と思いました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?