RelativeURL プラグイン

  • 2
    Like
  • 0
    Comment

これは Movable Type Advent Calendar 2016 24日目の記事です。
(諸事情により公開が間に合いませんでした。申し訳ございません。)

はじめに

今年注目されたキーワードの一つに、常時SSL化(AOSSL)がありましたね。Let's Encrypt の登場により、ドメイン認証型の SSL証明書の取得がより容易になったことや、Googleが推奨したこともあり、この流れは続いていくのでしょう。
システム構成についても、ELBにSSL証明書を導入することで、各ウェブサーバーに証明書を導入せずに運用するといったこともでき、目的に応じて柔軟に構成できるようになってきています。

常時SSL化しなくても、Movable Typeが導入されたサーバーでコンテンツを出力し、それをFTPで別サーバーに転送ていて運用したいというケースもあります。

こういった環境では、プロトコルを含めた絶対URIではないことが求められたりします。

3つの相対参照

RFC3986によると、URIの相対参照(Relative Reference)には、以下の3つがあります。

  • ネットワークパス参照: // から始まる相対参照。GoogleのHTML/CSSスタイルガイドで使われていますね。
  • 絶対パス参照: / から始まる相対参照。
  • 相対パス参照: スラッシュ文字をもっては始まらない相対参照。

Movable Typeが出力するコンテンツにおいて、絶対パス参照で記述したい場合、以下のようにテンプレートを記述したりします。

<mt:Unless name="aossl" regex_replace="/https?:\/\/www\.example\.com/g","">
....
</mt:Unless>

この方法では、一括で変換できるのですが、テキスト中のURLも変換してしまうため、注意が必要となります。
今回ご紹介するMovable Typeプラグインは、Movable Typeテンプレートタグで出力されたURIを絶対パス参照に変換するものです。

インストール方法

https://github.com/yagishita/mt-plugin-relativeurl からダウンロードしてお使いください。MITライセンスです。

利用方法(1)

<mt:EntryPermalink> などの変数タグの値を絶対パス参照に変換します。

<mt:EntryPermalink relative_url=“1”>

利用方法(2)

HTMLタグのhref属性とsrc属性で指定するドメインがウェブサイト・ブログのそれと一致する場合は絶対パス参照に変換します。一致しない場合はネットワークパス参照に変換します。

<mt:Unless name="aossl" relative_url="2">
....
</mt:Unless>

車輪の再発明的ですが、よろしければご利用ください。