各種パスと Movable Type のテンプレートタグ

http://hxxk.jp/2005/11/01/2209

記事データ

投稿者

真琴

投稿日時

2005-11-01T22:09+09:00

タグ
概要

MTBlogSitePath と MTBlogRelativeURL と MTBlogURL というテンプレートタグの違いと、 WWW におけるパスについての解説です。

リプライ

2 件のリプライがあります。

記事本文

Re: 小粋空間: .htaccess によるリダイレクト

MTタグを使って URL-path を自動的に生成していますが、残念ながらMTタグのみで「ドキュメントルートからのパス+ファイル名」というフォーマットを生成することはできません(いわゆるURL形式で生成されます)。

 ユーザマニュアルMTBlogRelativeURL というテンプレートタグが記載されています。 これを使えばドキュメントルートからの相対パスの記述を MT テンプレートタグだけで生成することが可能です。

<MTArchiveList archive_type="Individual">
<MTEntries>Redirect permanent <$MTBlogRelativeURL$><$MTArchiveDate format="%Y/%m/"$><$MTEntryBasename$>.html <$MTBlogURL$><$MTArchiveDate format="%Y/%m/"$><$MTEntryBasename$>.php</MTEntries>
</MTArchiveList>
<MTArchiveList archive_type="Category">
Redirect permanent <$MTBlogRelativeURL$><$MTSubCategoryPath$>/index.html <$MTBlogURL$><$MTSubCategoryPath$>/index.php
</MTArchiveList>
<MTArchiveList archive_type="Monthly">
Redirect permanent <$MTBlogRelativeURL$><$MTArchiveDate format="%Y/%m/"$>index.html <$MTBlogURL$><$MTArchiveDate format="%Y/%m/"$>index.php
</MTArchiveList>

これは Movable Type 3.2-ja-2 のデフォルト状態のアーカイブマッピングを例にしているため、小粋空間: .htaccess によるリダイレクトのソースと若干マッピングが異なりますが、基本的なソース形態はこのような形になります。 こう記述することで、 ファイルを生成した後、任意のエディタで開き、リダイレクトの設定で不要なドメイン部分を削除 するという手順は不要となります。

2 つのフルパス

これ以降、 Movable Type におけるフルパスの取り扱い方を解説しようと思いますが、一口に「フルパス」と言っても 2 種類あるため、まずはそれを説明します。

CGIPHP など、内部処理で扱うフルパス

正式名称は知りませんが、いわゆる「 / で始まるフルパス」というものです。 例えば xrea の場合、「 public_html の直下に put されている index.html のフルパス」ですと /virtual/userID/public_html/index.html というパスになります。

http:// で始まるフルパス

実際にブラウザでリクエストする際に用いられるフルパスです。

内部処理で扱うフルパスと Movable Type のテンプレートタグ

 内部処理で扱うフルパスを扱うために、 MTBlogSitePath というテンプレートタグが準備されています。 管理画面の「設定」→「公開」を開き、「サイト・パス」という欄を見るとそのテンプレートタグで表示されるパスを確認することができます。 ( /home/melody/public_html/weblog という例が書かれている部分です。 )

MTBlogSitePath で表示されるフルパスの他に、先ほど紹介した MTBlogRelativeURL で表示される相対パスがあります。 ユーザマニュアルには ブログの設定画面に指定された Site URL からの相対アドレスです と説明されています。 例えば、 Web Standards with MT ver.3.2 StrictMTBlogRelativeURL を使ってみると、 /template/mt_3_2_strict/ という結果が返ってきます。

http:// で始まるフルパスと Movable Type のテンプレートタグ

こちらはお馴染みの (?) MTBlogURL を用います。 Web Standards with MT ver.3.2 StrictMTBlogURL を使ってみると、 http://hxxk.jp/template/mt_3_2_strict/ という結果が返ってきます。

まとめおよび関連リソース

よって、小粋空間: .htaccess によるリダイレクトのように、 .htaccess をインデックステンプレートを用いて構築しようとする場合、リダイレクト元のパスを記述する場合は http:// で始まってしまう MTBlogURL ではなく MTBlogRelativeURL を用いるのが効率的ということになります。

なお、 .htaccess をインデックステンプレートで構築する手法については、 Redirect Templateentry_basename による URI からのリダイレクトを行う .htaccess の記述Movable Type 2.x 形式の Permalink から Movable Type 3.x 形式の Permalink にリダイレクトする方法にて解説していますので、合わせてご覧ください。

MultiViews が使えるならば

 .htaccess が使える環境ならば、合わせて Multiviews オプションを使える環境になっている可能性が高いと思います。 ( もちろん利用しているサーバによって異なりますが。 ) よって、せっかくリダイレクトを行うなら、アーカイブマッピングを .html から .php に変更するのではなく、 .html から拡張子無しに変更することをお勧めします。 今後 .php という拡張子が変更になる可能性もゼロではありません ( 事実、以前は .php3 だった拡張子が .php に変更になった経緯があります ) し、何らかの理由で .html に戻すことも考えられるためです。

<MTArchiveList archive_type="Individual">
<MTEntries>Redirect permanent <$MTBlogRelativeURL$><$MTArchiveDate format="%Y/%m/"$><$MTEntryBasename$>.html <$MTBlogURL$><$MTArchiveDate format="%Y/%m/"$><$MTEntryBasename$></MTEntries>
</MTArchiveList>
<MTArchiveList archive_type="Category">
Redirect permanent <$MTBlogRelativeURL$><$MTSubCategoryPath$>/index.html <$MTBlogURL$><$MTSubCategoryPath$>/
</MTArchiveList>
<MTArchiveList archive_type="Monthly">
Redirect permanent <$MTBlogRelativeURL$><$MTArchiveDate format="%Y/%m/"$>index.html <$MTBlogURL$><$MTArchiveDate format="%Y/%m/"$>
</MTArchiveList>

なお、拡張子無しにするといっても、サーバ上での実体は .php ないし .html などの拡張子が付いたファイルですので、合わせてRemoveExtFromPermalink プラグイン<$MTEntryPermalink$> から拡張子を無くすと良いでしょう。

トラックバック送信先

小粋空間: .htaccess によるリダイレクト

ユーザマニュアルに MTBlogRelativeURL というテンプレートタグが記載されていますが、これを使えばドキュメントルートからの相対パスの記述を MT テンプレートタグだけで生成することが可能です。

リプライ

2 件のリプライが送られています。

2005-11-02T01:15+09:00 - yujiro

こんばんは。 トラックバックありがとうございます。 MTBlogRelativeURL は記事書いた後で気がつきました。真琴さんのリスト、完璧ですね。 MTBlogRelativeURL の後方にタグを書かずに済む変数タグも一応作ってみました(コード再利用なので非公開ですが)。

2005-11-03T02:06+09:00 - 真琴

こんばんは。 MTBlogRelativeURL は Atom テンプレートでは使われていますが、それ以外では見かけないので知らない方の方が多そうですね。 htaccess の他は CSS のテンプレートに利用できるかも。 ( 背景画像の url 指定などに )

この記事に対するご意見やご質問、ご感想などありましたらこのフォームに簡潔に記入して下さい。 簡潔に記入できない場合や、関連記事にてご意見をお寄せいただく場合は、ご自身の weblog にて記事を書かれた上で あてにトラックバックとして送信してください。

記入フォーム

補足情報

著作、講演、制作実績など