これでもう記事URLが重複することはない!?MovableType.netのアーカイブマッピング機能を発見
ども、どもども。
ジャクスタポジション 西山です。
この記事は、Movable Type Advent Calendar 2024の15日目の記事です。
今回、これで3つ目の投稿となります(1人でたくさん書いてすみません汗)
今日はMovableType.netのアーカイブマッピングで気がついたことがあったので、それを書いていこうと思います。
(知らなかったのが私だけだったら恥ずかしいけれど、知らなかったんだもの!笑)
Movable Typeのアーカイブマッピング
さて、Movable Typeで「いわゆるブログ記事」を作成する際、どんなアーカイブマッピングを利用していますか?
アーカイブマッピングというのは、例えば記事を作成した際に、どのようなURLで記事が公開されるのかを設定するもの(記事以外にも存在する)で、事前に用意されたアーカイブマッピング以外に任意に定義する(カスタムする)こともできます。
また、アーカイブマッピングで利用できる定義を組み合わせることで比較的自由にパス(URL)を作ることも可能になっています。
さらにこのアーカイブマッピングには一部のMTタグを使用することもできるので、条件にあわせて出力されるパスを分岐する…なんてこともできたりします。(ご利用は計画的に)
というわけで、ブログ記事のアーカイブマッピングにはいろいろなやり方があるのですが、仮に同じURLで記事が公開されてしまうと、後から公開された記事が先に公開された記事を上書きしてしまうので、弊社ではそのURLが重複してしまわないように、記事のエントリーID(記事固有のID)や、記事が公開された年月日と時分秒を使っています。
MovableType.netのアーカイブマッピング設定例
MovableType.netでは、記事のアーカイブマッピングを%y/%m/%d-%h%n%s.html(年/月/日-時分秒.html)とすることが多いです。
エントリーIDの使用も考えたのですが、MovableType.netのエントリーIDって長いのですよね…(汗)
それがだめというより、どういう意味なのかわからないのでちょっと落ち着かない感じです。
設定内容 | アーカイブパスの例 | 出力例 |
---|---|---|
エントリーIDを利用 | %y/%m/%E.html | https://www.ni4.jp/2024/12/2832285.html |
年月日時分秒を利用 | %y/%m/%d-%h%n%s.html | https://www.ni4.jp/2024/12/04-093000.html |
ちなみに、MovableType.netではアーカイブマッピングの定義にMTタグを使用することはできません。
MovableType.netの予約投稿では「秒」が出力されない
ただ、年月日と時分秒で設定していて気がついたのですが、MovableType.netで「予約投稿」を行う際は、アーカイブマッピングに秒(%s)を入れていてもそれが出力されることはなく決まって「00」となってしまうのです。
以下は2024年12月14日14時28分15秒を設定して予約投稿をした場合の例です。
出力されるパーマリンク(記事のURL)がこちら
上記のように、秒を入力したとしてもパーマリンク(記事のURL)の秒の部分は「00」になってしまいます。
ソフトウェア版などでは問題なく秒を指定できていたので盲点でした。
MovableType.netの予約投稿を使うと重複するURLができてしまう?
もし仮に同じ日時に複数の記事を予約投稿(公開)したい場合、ソフトウェア版では「秒」を変えることで対応できていたのですが、MovableType.netの場合はそれができない…?と気が付きました。(秒という考え方も万全ではないのですけどね)
レアなケースかもですが、たまたま現在構築中のウェブサイトではその可能性が出てくることが予想されたので、実際にテストしてみることに。
MovableType.netで同じURLとなる記事を予約投稿してみる
というわけで、実際に同じURLとなる記事を予約投稿してみた結果がこちらです。
あとから作成した記事のファイル名末尾に「-1」という番号が自動付与されました。
なお、更に同じURLとなる記事を作成した場合は「-2」が付き、以降それが続くようです。
ちなみにこれは、%y/%m/%-f(yyyy/mm/entry-basename.html)とした場合も同じでした。
さらに…%y/%m/index.html とした場合でもフォルダ名に連番が付くことを確認できました。
これは知らなかった…!
(私だけ?汗)
結論:MovableType.netでは同じURLで記事を上書きしてしまうことはない
以上のことから、MovableType.netではアーカイブマッピングの設定によって、仮に同じURLとなってしまうケースであっても、自動的に連番を付けてそれを回避してくれることがわかりました。
これはソフトウェア版にはない機能だと思います。
ただ、最初の記事には連番がなく2つ目の記事に「-1」と付くのは、個人的には違和感がありますが…、最初の記事が公開になった時点で同じURLの記事は存在しないので、これはどうしようもなさそうでうね(-2からスタートとかのほうが気持ち良いかも?)
最初は秒が指定できないことがちょっと不便かもと思いましたが、記事中に「秒」を掲載することはほぼ無いし、重複するURLが出てこないのであれば、これはこれで問題ないかなと感じました。
が…個人的にはファイル名に秒を入れられるほうが良いかな(笑)
以上、MovableType.netのアーカイブマッピングで発見したことでした!
この記事は、Movable Type Advent Calendar 2024の15日目の記事です。
明日は hanami さんの記事が公開予定となっておりますので、お楽しみに!