これは 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>
車輪の再発明的ですが、よろしければご利用ください。