www.ni4.jp

これでもう記事URLが重複することはない!?MovableType.netのアーカイブマッピング機能を発見

ども、どもども。
ジャクスタポジション 西山です。

この記事は、Movable Type Advent Calendar 2024の15日目の記事です。
今回、これで3つ目の投稿となります(1人でたくさん書いてすみません汗)

今日はMovableType.netのアーカイブマッピングで気がついたことがあったので、それを書いていこうと思います。
(知らなかったのが私だけだったら恥ずかしいけれど、知らなかったんだもの!笑)

Table of Contents

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)がこちら

秒の部分が「00」になってしまう

上記のように、秒を入力したとしてもパーマリンク(記事のURL)の秒の部分は「00」になってしまいます。
ソフトウェア版などでは問題なく秒を指定できていたので盲点でした。

MovableType.netの予約投稿を使うと重複するURLができてしまう?

もし仮に同じ日時に複数の記事を予約投稿(公開)したい場合、ソフトウェア版では「秒」を変えることで対応できていたのですが、MovableType.netの場合はそれができない…?と気が付きました。(秒という考え方も万全ではないのですけどね)

レアなケースかもですが、たまたま現在構築中のウェブサイトではその可能性が出てくることが予想されたので、実際にテストしてみることに。

MovableType.netで同じURLとなる記事を予約投稿してみる

というわけで、実際に同じURLとなる記事を予約投稿してみた結果がこちらです。

同じ時刻に予約投稿した場合のパーマリンク

あとから作成した記事のファイル名末尾に「-1」という番号が自動付与されました。
なお、更に同じURLとなる記事を作成した場合は「-2」が付き、以降それが続くようです。

ちなみにこれは、%y/%m/%-f(yyyy/mm/entry-basename.html)とした場合も同じでした。

同じURLになる場合は連番がつく

さらに…%y/%m/index.html とした場合でもフォルダ名に連番が付くことを確認できました。

フォルダで終わる場合も連番が付く

これは知らなかった…!
(私だけ?汗)

結論:MovableType.netでは同じURLで記事を上書きしてしまうことはない

以上のことから、MovableType.netではアーカイブマッピングの設定によって、仮に同じURLとなってしまうケースであっても、自動的に連番を付けてそれを回避してくれることがわかりました。
これはソフトウェア版にはない機能だと思います。

ただ、最初の記事には連番がなく2つ目の記事に「-1」と付くのは、個人的には違和感がありますが…、最初の記事が公開になった時点で同じURLの記事は存在しないので、これはどうしようもなさそうでうね(-2からスタートとかのほうが気持ち良いかも?)

最初は秒が指定できないことがちょっと不便かもと思いましたが、記事中に「秒」を掲載することはほぼ無いし、重複するURLが出てこないのであれば、これはこれで問題ないかなと感じました。

が…個人的にはファイル名に秒を入れられるほうが良いかな(笑)

以上、MovableType.netのアーカイブマッピングで発見したことでした!


この記事は、Movable Type Advent Calendar 2024の15日目の記事です。
明日は hanami さんの記事が公開予定となっておりますので、お楽しみに!

にしやま やすふみ

札幌のウェブサイト・ホームページ制作会社 ジャクスタポジションで、代表とディレクターやってます。Movable Typeとラーメン、ザンギ、酒が好き。
プロフィール詳細はこちら

アクセスの多い記事