Movable Type 備忘録

 

 ブログを上手に運用する

MovableType(ムーバブルタイプ)を初めてインストールした場合、以下のようなディレクトリ構成で構築されます。

http://bizcaz.com/
|
+---index.html               <-- メイン・インデックス
+---styles-site.css          <-- CSS
|
+---2006/                    <-- 2006年用ディレクトリ
|   +---01/
|   |   +---index.html       <-- 2006/01月の月別アーカイブ・ページ
|   |   |
|   |   +---aaa.html         <--- ▼
|   |   |      :
|   |   |      :                    2006/01月内に投稿されたエントリ・ページ
|   |   |      :
|   |   +---zzz.html         <--- ▲
|   |
|   +---02/
|   |   +---index.html       <-- 2006/02月の月別アーカイブ・ページ
|   |   |
|   |   +---aaa.html         <--- ▼
|   |   |      :
|   |   |      :                    2006/02月内に投稿されたエントリ・ページ
|   |   |      :
|   |   +---zzz.html         <--- ▲
|   |
|   +---10/
|       +---index.html       <-- 2006/10月の月別アーカイブ・ページ
|
+---category1/
|       +---index.html       <-- トップカテゴリ1アーカイブ・ページ
|       |
|       +---subcategory1/
|           +---index.html   <-- サブカテゴリ1アーカイブ・ページ
|
+---category2/
|       +---index.html       <-- トップカテゴリ2アーカイブ・ページ
|       :
|       :
|       :
+---mt/    <-- MovableTypeのトップディレクトリ
+---alt-tmpl/
|
+---default_templates/
|      :
|      :
+---mt-static/
|
+---php/
|
+---plugins/
|      :
|      :
+---tools

上記のようにメイン・インデックスと同じディレクトリの中に"2006"というディレクトリが作成されて、その中に月別アーカイブ・ページやエントリ・ページなどが作成されます。
また、カテゴリのページも、やっぱりメイン・インデックスと同じディレクトリの中に作成されます。

ブログを公開して間もなかったり、カテゴリが少ない内はあまり気になることはないと思いますが、たとえば、上記ディレクトリ構成でトップカテゴリを20コ作った場合どうなってしまうか…。
たとえば、極端な話ブログの運営を10年続けた場合どうなってしまうでしょうか。

その間にも、いろんなカスタマイズなどでディレクトリやファイルを作成したり、バックアップ用にディレクトリを作成したりなどすると思うんです。
想像すると、とってもずさんなかんじしますよね。

前置きが長くなりましたが、今回は各アーカイブ・ページを上手にまとめてみようと思います。

アーカイブ・ページを1つのディレクトリにまとめる

たとえば、以下のようなディレクトリ構成にしたらどうでしょう。

http://bizcaz.com/
|
+---index.html               <-- メイン・インデックス
+---styles-site.css          <-- CSS
|
+---archives/
|   |
|   +---2006/                    <-- 2006年用ディレクトリ
|   |   +---01/
|   |   |   +---index.html       <-- 2006/01月の月別アーカイブ・ページ
|   |   |   |
|   |   |   +---aaa.html         <--- ▼
|   |   |   |      :
|   |   |   |      :                    2006/01月内に投稿されたエントリ・ページ
|   |   |   |      :
|   |   |   +---zzz.html         <--- ▲
|   |   |
|   |   +---02/
|   |   |   +---index.html       <-- 2006/02月の月別アーカイブ・ページ
|   |   |   |
|   |   |   +---aaa.html         <--- ▼
|   |   |   |      :
|   |   |   |      :                    2006/02月内に投稿されたエントリ・ページ
|   |   |   |      :
|   |   |   +---zzz.html         <--- ▲
|   |   |
|   |   +---10/
|   |       +---index.html       <-- 2006/10月の月別アーカイブ・ページ
|   |
|   +---category1/
|   |       +---index.html       <-- カテゴリ1アーカイブ・ページ
|   |       |
|   |       +---subcategory1/
|   |           +---index.html   <-- サブカテゴリ1アーカイブ・ページ
|   |
|   +---category2/
|           +---index.html       <-- カテゴリ2アーカイブ・ページ
|
+---mt/    <-- MovableTypeのトップディレクトリ
+---alt-tmpl/
|
+---default_templates/
|      :
|      :
+---mt-static/
|
+---php/
|
+---plugins/
|      :
|      :
+---tools

メイン・インデックスと同じディレクトリの中にarchivesというディレクトリを作って、その中に各アーカイブ・ディレクトリやページが作られるようにすれば、とってもすっきりしまね。

アーカイブ・パス変更による影響

具体的な説明の前に、アーカイブ・パス変更による影響について説明します。

デフォルトのまま運用してきた人に関係することです。
これから新規にブログを運用する人にはまったく関係ないので読み飛ばしてください。

アーカイブ・パスを変更するとURLが変わります。
トラックバックやコメントした訪問先のリンクが切れることになります。

または、外部サービスに各アーカイブのURLを登録してた場合も当然リンク切れします。

もう1つ、アーカイブ・パスを変更したことにより、<$MTBlogURL$>と<$MTBlogArchiveURL$>は別な場所を指すようになります。

今まではアーカイブ・ページのURLに<$MTBlogURL$>タグを使用していても、同じパスだったので問題はありませんでしたが、今後は<$MTBlogArchiveURL$>タグを使用しないと404エラーなどが発生しますので気をつけてくださいね。

影響範囲は思いのほか広いです。 とはいっても、対応策はあるのでご安心を。

アーカイブ・パスの変更の仕方

では、具体的な方法を説明します。
まず、現在の各アーカイブのURLをすべて取得します。

この作業は、新規にブログを立ち上げよう…という人には不要な作業ですので、読み飛ばしてください。

また、既に運用済みの人でアーカイブ・パスを変更しようという人は、あらかじめmt/mt-config.cgi中に以下を追加しておくことをオススメします。

# STATIC PUBLISHING:
# Movable Type can now be configured (using the DeleteFilesAtRebuild configuration directive)
# to delete files made unnecessary by changes made in the administrative interface.
# Individual archive files are deleted when previously published entries are deleted or unpublished.
# Category archives are deleted when their corresponding categories are deleted.
#
DeleteFilesAtRebuild 1

通常、MovableType(ムーバブルタイプ)の管理画面からエントリを削除しても、ファイルはゴミとなって残ったままになってしまいます。
でも、このオプションを "1"とすることで、ファイルも削除してくれるようになります。


Warning: include() [function.include]: URL file-access is disabled in the server configuration in /virtual/bzbell/public_html/archives/2006/10/28-195847.php on line 220

Warning: include(http://bizcaz.com/widget/litebox.php?url=http://bizcaz.com/image/zu/archive_dir.jpg&width=200&height=146&title=) [function.include]: failed to open stream: no suitable wrapper could be found in /virtual/bzbell/public_html/archives/2006/10/28-195847.php on line 220

Warning: include() [function.include]: Failed opening 'http://bizcaz.com/widget/litebox.php?url=http://bizcaz.com/image/zu/archive_dir.jpg&width=200&height=146&title=' for inclusion (include_path='.:/usr/local/lib/php') in /virtual/bzbell/public_html/archives/2006/10/28-195847.php on line 220

こちらのMovableTypeで楽にリダイレクトするを参考に、リダイレクトのための htaccess.txt ファイルを作成しておいてください。
これを忘れると、後々大変な思いすることになります。

次に、アーカイブのパスを設定します。
MovableType(ムーバブルタイプ)の管理画面からブログを選択して、画面左にある「設定」をクリックします。

そして、画面上にある「公開」をクリックすると、そのブログのURLやサイト・パス、アーカイブ・マッピングなどといった表示がされます。
左の図にもある、「アーカイブの設定」というチェックボックスをチェックすると、アーカイブ・パスを任意に設定可能となり、「アーカイブURL」と「アーカイブ・パス」を入力するエリアが表示されます。

先ほどもちょと触れましたが、通常はサイト・パスとアーカイブ・パスは同じパスになっています。
タグでいうと、<$MTBlogURL$>と<$MTBlogArchiveURL$>は同じパスを指します。

たとえば、サイトのURLがhttp://●●●.com/blog/で、サイト・パスが/home/●●●/www/blog/だとした場合、「アーカイブURL」と「アーカイブ・パス」には以下のように入力します。

アーカイブURL
http://●●●.com/blog/archives/
アーカイブ・パス
/home/●●●/www/blog/archives/

この設定をすることで、個別エントリ・アーカイブ、カテゴリ・アーカイブ、月別アーカイブなどの全アーカイブが上記で指定した場所に作成されるようになります。

設定を行ったら、画面下にある「変更を保存」をクリックして保存します。 そして、すべてを再構築します。

以上で、各アーカイブを1つのディレクトリにまとめることができました。

実はわたしもずっとデフォルトのままで運用してたのですが、先ほどこのカスタマイズを対応しました。
というのは、ディレクトリやらファイルやらを作ってたら、だんだん汚くなってきて(ゴミがいっぱい)、削除したら間違ってカテゴリのディレクトリも消しちゃいました。 やってしまいましたよ。

再構築し直せば、また作成されるので大きな被害にはならないけど、わたしの場合今後もこんなことが絶対あると思って対応しました。

以下は、わたしのようにデフォルトで運用してきて、途中でアーカイブ・パスを変更したい人向けの内容です。

このブログは、MySQLでデータの管理を行っています。
MySQLは再構築がモッタリしてて遅いし、普段は何かと不満があるのですが、こういう時に威力をはっきします…わたしの場合は。

MySQLにはphpMyAdminというツールが用意されています。
このツールを使えば、データベースの内容をテキストファイルにしてダウンロードすることができます。

アーカイブ・パスを変更すると、ページ間でリンクを貼ってると当然リンク切れになりますね。
そこで、phpMyAdmin を使ってエントリのデータが保存されている mt_entry というテーブルのデータをテキストファイルにしてダウンロードすれば、あとはテキストエディタで変更になったURLを置換してから、phpMyAdmin を使って更新すればカンタンにリンクのURLを修正することができます。

わたしはこの方法で一括置換で一気に修正しちゃいました。

MySQL以外のデータベースをお使いの人は… … …大変だけどちょとずつ地道に変更していくしかないようです。

次に、アーカイブ・パス変更前URLへのアクセスをリダイレクトで変更後URLにアクセスするようにします。
事前に作っておいた、htaccess.txt ファイルをアップロードして、ファイル名を .htaccess に変更します。

そうするとリダイレクトが有効になります。
試しに、変更前URLのエントリなどを表示してみてください。 変更後URLのエントリが表示されればOKです。

最後に、ゴミとなったアーカイブ・パス変更前の各ページを削除しちゃってください。 心配な人はしばらくとっておいても問題ありません。 わたしはスッパリ削除しました。

以上で、アーカイブ・パスを設定してディレクトリ構成をスッキリさせてみました。
人それぞれ運用の仕方ってあると思いますが、ディレクトリを上手に使って整理しておくと、わたしみたいに間違って削除しちゃうなんてトラブルを避けれます…って、こんなトラブルはわたしだけかな。

MovableType(ムーバブルタイプ)を長く使ってる人は、みなさん当たり前のようにアーカイブ・パスを設定しているっぽい…URLを見るとそんなかんじ。

リダイレクトに失敗したときに備えて、こちらのエラーページをカスタマイズするも行っておくといいかも、です。

では、SEE YOU♪

 Trackback Pings(1)

from Seeking for my unique color.

初めての人も初めてでない人もこんにちは。今まで「はてな」で日記書いてたんですが、...

 Comments(13)

#1: Posted by 起動戦車ガンタンク [RES]

ご存知だったら削除して下さい。

Movable Typeの管理画面からエントリーを削除
してもデータベースのデータのみ削除されるだ
けで個別エントリーは残ってしまいます。

そこでmt-config.cgiに「DeleteFilesAtRebuild 1」
を追加すると個別エントリーも削除されます。

詳細は「MovableTypeで行こう!」さんの

http://cheebow.info/docmt/archives/2006/06/movable_type_33_1.html

#2: Posted by bzbell [RES]

>>1 起動戦車ガンタンク さん

こんにちわ^^

> そこでmt-config.cgiに「DeleteFilesAtRebuild 1」を追加すると個別エントリーも削除されます。

はい。
抜かりはないです( ̄∇ ̄)q

でも、明記しておいた方が良さそうですね。
ありがとうございます♪

#3: Posted by もじら [RES]

はじめまして。

友人の誘いでMTでブログを構築しましたが、彼は
アフィリ中心にやりたいようなので、ラピュタで細々
とブログを書いてます。。(T_T)。。。

こちらのブログは説明が細やかで親切ですね。
(私は大雑把なもので。。。)

カスタマイズやテンプレの作成はこれからですが
いろいろと勉強させていただこうと思います。。

#4: Posted by oscar [RES]

こんにちは、bzbellさん。
古いMTだと、アーカイブフォルダの設定が最初に表示されてませんでしたっけ。私はてっきり、作らなくちゃいけないものだと思ってました。
>phpMyAdminを使ってエントリのデータが保存されているmt_entryというテーブルのデータを・・・
phpMyAdmin使うんなら、直接テーブルの中身を置換できますよ。
エントリーの画像を、アーカイブフォルダの下に移動するのに使ったことあります。

#5: Posted by bzbell [RES]

>>3 もじら さん

はじめまして^^

> アフィリ中心にやりたいようなので、ラピュタで細々とブログを書いてます。。(T_T)。。。

友人も細々やってますよ( ̄∇ ̄)b
なかなかムズかしいようで…。

> こちらのブログは説明が細やかで親切ですね。

備忘録ですから、後で見たときに分からないと意味ないなぁ…と思って、ちょとしつこいくらいに書くようにしてるんです。
本質はわたしも大雑把なですよ(; ̄∇ ̄A

> いろいろと勉強させていただこうと思います。。

がんばってください(●´∀`●)
わたしまだまだ発展途上なので、いっしょに勉強しましょ♪

#6: Posted by bzbell [RES]

>>4 oscar さん

こんにちわ^^

> 古いMTだと、アーカイブフォルダの設定が最初に表示されてませんでしたっけ。

そうなんですか!?
MT3.2から使ってますが、MT3.2では設定しなくても使えてました。
その頃はアーカイブ・パスを変更して…なんて考えもしなかったので(; ̄∇ ̄A

> phpMyAdmin使うんなら、直接テーブルの中身を置換できますよ。

それって俗に言うSQLってやつでデータを制御するんですよね。
わたしSQLよく分かってないので(つω-`。)
つか、つい最近ちょこっとやってみた程度なので…。

oscarさん含め、有識者の人ならテキストファイルでダウンロードして…なんてことせず、直接置換などできちゃうんでしょうね。
すごいわぁ…(●´∀`●)

#7: Posted by oscar [RES]

>それって俗に言うSQLってやつでデータを制御するんですよね。
確かに裏ではSQLコマンドを発行してますが、普通に検索置換のボタンがあってGUIで出来ますよ。それがphpMyAdminの利点ですから。
名前を間違えたタグを修正したりも出来ます。

そうか、簡単なエントリー書いてみるかな。

#8: Posted by bzbell [RES]

>>7 oscar さん

こんにちわ^^

> 普通に検索置換のボタンがあってGUIで出来ますよ。それがphpMyAdminの利点ですから。

えぇーーーーーーΣ( ̄Д ̄;)!!
シロウトでも扱えますかっ!!
たとえば、特別な正規表現みたいなものって必要とかないですか(;´Д`A ```
SQLを使ってデータを抽出するのってムズかしかったので…。

> そうか、簡単なエントリー書いてみるかな。

ぜひお願いします♪
できれば、例をつけてもらえるとシロウトのわたしでも分かりやすいです(; ̄∇ ̄A ほほ

#9: Posted by oscar [RES]

っていうか、よく考えたら、普通にMTの管理画面で検索・置換やればいいんじゃないですか。
すっかり忘れてた・・・(笑)

項目を指定するにチェック入れると、エントリー内のみとかで出来ましたよね。

#10: Posted by bzbell [RES]

>>9 oscar さん

こんにちわ^^

> 普通にMTの管理画面で検索・置換やればいいんじゃないですか。

そうなんですけど、ただ置換するだけならそれでも問題なかったのですが、以前それをやったら別なところまで置換されてしまって大変な思いしたんです。

なので、1度ダウンロードして置換した結果を確認した上でUPするようにしてるんです(; ̄∇ ̄A
ちょと手間ですけどね♪

#11: Posted by tutu [RES]

またまた、初心者の質問で恐縮なのですが...

この記事も読んでいてブログを続けていく上ですごく気になり、試してしまいました。

結果、archivesフォルダは作成されたのですが、(http://××××××.com/×××/archives/)

カテゴリーとサブカテゴリーが表示(フォルダの作成も)されなくなりました。

状況は、
■ MovableType3.34です。
■ 2つ目のブログ作成(全くの初期状態)です。1つ目は、既に進行していた(やり方が複雑そうだったので)のでarchivesフォルダの取りまとめは行っていません。
■ >アーカイブ・パスを変更したことにより、<$MTBlogURL$>と<$MTBlogArchiveURL$>は別な場所を指すようになります。

のところなのですが、<head>~</head>内も該当するのでしょうか?(今のところは、変更していません。)

■ カテゴリー部分は、この様になっています。
<MTIfArchiveTypeEnabled archive_type="Category">
<div class="category-label">
<MTTopLevelCategories><MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount"><li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel pmhc=""></a><MTElse><li class="module-list-item"><MTCategoryLabel pmhc=""></MTElse></MTIfNonZero><MTSubCatsRecurse></li>
<MTSubCatIsLast></ul></MTSubCatIsLast></MTTopLevelCategories>
</div><!-- category-label_end -->
</MTIfArchiveTypeEnabled>

■ フォルダは任意の名前に変更しています。

■ ロリポップのレンタルサーバーを使用しているのですが、サイト・パスをこの様にしています。
/home/sites/lolipop.jp/users/lolipop.jp-dp×××××××××/web/×××
↓アーカイブ・パス
/home/sites/lolipop.jp/users/lolipop.jp-dp×××××××××/web/×××/archives

情報が少ないかもしれませんが、ヒントでもいただければ嬉しいです。すいませんがよろしくお願いいたします。

#12: Posted by bzbell [RES]

>>11 tutu さん

こんにちわ^^

ご諮問の件ですが、カテゴリ・アーカイブのみ表示されないということは、エントリや月別ページは表示されているということですね。

アーカイブ・パスを設定したことで影響するのは、アーカイブ(エントリ、カテゴリ、月別)になります。ですので、ブログ全体の再構築を行う必要があります。

まずは、ブログ全体を再構築して確認してみてください。

また、<$MTBlogArchiveURL$>はアーカイブページのベースとなるURL(たとえば、http://bizcaz.com/archives)ですので、そのディレクトリ内のページを読み込む必要がないのであれば、<head>~</head>内は影響ありません。

#13: Posted by tutu [RES]

>>12 bzbell さん

早速、返信をいただきましてありがとうございます。

表示されないのは、カテゴリと月別でした。エントリは、表示されています。再構築も出来ていると思いますので、今のところ原因が私ではわからない状態です。

一度、全てを保存して最初からやってみようと思います。

お騒がせしました。すばやい対応ありがとうございます。

 Post a Comment

コメント用フィード