Movable Type 備忘録
MovableTypeで楽にリダイレクトする
- Prev Page: MovableTypeのカテゴリ一覧などをツリー表示する
- Next Page: MovableTypeをPHP化する
サイト内のディレクトリ構成変更または、ディレクトリ名、ページ名を変更してしまうとURLが変わってしまい、 変更前のURLに、せっかく訪問者さんが来てくれようとしてもリンク切れになってしまうので、訪問者さんにとっても、自分にとってもいいことありませんね。
今回は、MovableType(ムーバブルタイプ)で楽にリダイレクトさせるカスタマイズについて紹介してみたいと思います。
[2007.05.22] 記事内容をもっと分かりやすく書き直しました。
実は、わたしのサイトでも最近、ディレクトリ( カテゴリ )名の変更と、PHP化によるページファイル名が変更になってしまったので、今から紹介する方法で楽に移行が完了したんですよ(●´∀`●)
リダイレクトとは具体的にどんなものなのか、というと以下のURLをクリックしてみてくてださい。
上記URLは、わたしのサイトで公開してましたページの変更前のURLなんです。
ですが、クリックした先はというと、
というリンク先になっていますね ( ̄∇ ̄)b
これがリダイレクトという機能です。
変更前のURL http://bizcaz.com/plugins.php は、実際には今は存在していません。
このURL http://bizcaz.com/plugins.php にアクセスされると、自動的に http://bizcaz.com/archives/movabletype/plugins/ にリダイレクトされる…というしくみになっています。
カンタンですが、リダイレクトについて分かりましたか。
では、MovableType(ムーバブルタイプ)の機能によるリダイレクトを実現してみたいと思います。
今回は友人に教えてもらいましたぁ…THANKS!
.htaccessファイルを作るためのテンプレート追加
リダイレクトは以下のようなフォーマットになっています。
Redirect permanent ウェブサイトのルートディレクトリからのパス リダイレクト先のURL
青い字の部分は必ずルーティディレクトリからのパスを指定する必要があります。
URLではありませんのでお間違えないように
- まず、プラグインをインストールします。
以下のMTRelativePathプラグインをインストールすることで、ウェブサイトのURLからルートディレクトリのパスに変換してくれます。インストール先はいつものように、mt/plugins/ディレクトリの中にアップロードしてください。
- 次にリダイレクト用にインデックス・テンプレートを作成します。
MovableType(ムーバブルタイプ)管理画面からブログを選択して、左サイドバーにある「テンプレート」をクリックします。
そして、画面右上にある「テンプレートを新規作成」をクリックしてください。入力内容は以下の通りです。
テンプレート名:htaccess出力ファイル名:htaccess.txtこのテンプレートにリンクするファイル:未記入でいいです。テンプレートの内容:以下のコードをコピペします。
# トップページをリダイレクトする場合Redirect permanent <$MTBlogURL relative_url="1"$>index.html <$MTBlogURL$>index.php# 各エントリをリダイレクトする場合<MTEntries lastn="0">Redirect permanent <$MTEntryPermalink relative_url="1"$> <$MTBlogArchiveURL$><MTEntryDate format="%Y/%m/%d-%H%M%S"$>.php</MTEntries># 各カテゴリをリダイレクトする場合<MTArchiveList archive_type="Category">Redirect permanent <$MTArchiveLink relative_url="1"$> <$MTArchiveLink$>index.php</MTArchiveList># 各月別ページをリダイレクトする場合<MTArchiveList archive_type="Monthly">Redirect permanent <$MTArchiveLink relative_url="1"$> <$MTArchiveLink$>index.php</MTArchiveList># 各日別ページをリダイレクトする場合<MTArchiveList archive_type="Daily">Redirect permanent <$MTArchiveLink relative_url="1"$> <$MTArchiveLink$>index.php</MTArchiveList>
上記はブログのPHP化のときに使った、.htaccess用のコードになります。
青い字の部分が現在のルートディレクトリからの絶対パスとなります。
赤い字の部分がリダイレクト先のURLです。上記は、ディレクトリ名が変わったとか、ファイル名が変わったなど、同じサイト内でリダイレクトさせる例ですが、サーバー移転など、別なURLにリダイレクトしたい場合には以下のようなコードになります。
# トップページをリダイレクトしたい場合Redirect permanent <$MTBlogURL relative_url="1"$>index.html ●●●/index.html# 各エントリをリダイレクトしたい場合<MTEntries lastn="0">Redirect permanent <$MTEntryPermalink relative_url="1"$> ●●●/<MTEntryDate format="%Y/%m/%d-%H%M%S"$>.html</MTEntries># 各カテゴリをリダイレクトしたい場合<MTArchiveList archive_type="Category">Redirect permanent <$MTArchiveLink relative_url="1"$> ●●●/<$MTCategoryLabel dirify="1"$>/index.html</MTArchiveList># 各月別ページをリダイレクトしたい場合<MTArchiveList archive_type="Monthly">Redirect permanent <$MTArchiveLink relative_url="1"$> ●●●/<MTArchiveDate format="%Y/%m/"$>index.html</MTArchiveList># 各日別ページをリダイレクトしたい場合<MTArchiveList archive_type="Daily">Redirect permanent <$MTArchiveLink relative_url="1"$> ●●●/<MTArchiveDate format="%Y/%m/%d/"$>index.html</MTArchiveList>
作成された htaccess.txt 内の青い字の部分にあたるところを、リダイレクト先のURLで一括置換すれば楽ですよね。
また、個別エントリのファイル名が異なる場合は…大変ですが1つ1つ直すしかないです (; ̄∇ ̄A 一通り入力したら、保存してこのリダイレクト用のインデックス・テンプレートのみ再構築します。
再構築するとindex.htmlと同じ場所にhtaccess.txtというファイルが作成されます。
リダイレクト先の内容を確認
htaccess.txtをダウンロードして、テキストエディタで開いてください。
そして、現在のURL、リダイレクト先のURLなど間違いがないか確認します。
リダイレクト先が間違ってると正しくリダイレクトされませんので注意してください。
以上で、リダイレクト用のhtaccess.txtというファイルが作られました。
このままではまだリダイレクトされません。
リダイレクト先の準備ができたら、サーバーにあるhtaccess.txtを.htaccessのようにファイル名を変更してください。 変更するとすぐにリダイレクトが有効になります。
実際にわたしのサイトでリダイレクトしてる例を以下に記します。
http://bizcaz.com/
|
+-- /archive/movabletype/template/ <-- ここ配下のページにアクセスされたらリダイレクトする
| +-- index.php
| +-- styles-site.css
| |
| +-- archives/
| | +-- 2006/
| | +-- 2007/
|
+-- .htaccess <--- ここにおくことでリダイレクトされます
上記はディレクトリ以下に存在するエントリページ、月別ページにアクセスされたら、以下に示すリダイレクト先に変換するようにしています。
.htaccess# 各エントリをリダイレクトしたい場合Redirect permanent /archives/movabletype/template/archives/2007/04/01-021005.php http://bizcaz.com/archives/2007/04/01-021005.phpRedirect permanent /archives/movabletype/template/archives/2007/02/25-211414.php http://bizcaz.com/archives/2007/02/25-211414.phpRedirect permanent /archives/movabletype/template/archives/2007/02/25-002859.php http://bizcaz.com/archives/2007/02/25-002859.phpRedirect permanent /archives/movabletype/template/archives/2007/02/11-214915.php http://bizcaz.com/archives/2007/02/11-214915.phpRedirect permanent /archives/movabletype/template/archives/2007/02/05-195215.php http://bizcaz.com/archives/2007/02/05-195215.phpRedirect permanent /archives/movabletype/template/archives/2007/02/05-011951.php http://bizcaz.com/archives/2007/02/05-011951.phpRedirect permanent /archives/movabletype/template/archives/2007/01/21-194045.php http://bizcaz.com/archives/2007/01/21-194045.phpRedirect permanent /archives/movabletype/template/archives/2007/01/14-165458.php http://bizcaz.com/archives/2007/01/14-165458.phpRedirect permanent /archives/movabletype/template/archives/2007/01/08-171147.php http://bizcaz.com/archives/2007/01/08-171147.phpRedirect permanent /archives/movabletype/template/archives/2007/01/02-054526.php http://bizcaz.com/archives/2007/01/02-054526.phpRedirect permanent /archives/movabletype/template/archives/2006/12/31-130040.php http://bizcaz.com/archives/2006/12/31-130040.phpRedirect permanent /archives/movabletype/template/archives/2006/12/30-024643.php http://bizcaz.com/archives/2006/12/30-024643.phpRedirect permanent /archives/movabletype/template/archives/2006/12/29-231235.php http://bizcaz.com/archives/2006/12/29-231235.phpRedirect permanent /archives/movabletype/template/archives/2006/12/29-194141.php http://bizcaz.com/archives/2006/12/29-194141.phpRedirect permanent /archives/movabletype/template/archives/2006/12/23-144858.php http://bizcaz.com/archives/2006/12/23-144858.phpRedirect permanent /archives/movabletype/template/archives/2006/12/15-182221.php http://bizcaz.com/archives/2006/12/15-182221.phpRedirect permanent /archives/movabletype/template/archives/2006/12/10-193209.php http://bizcaz.com/archives/2006/12/10-193209.phpRedirect permanent /archives/movabletype/template/archives/2006/12/09-084354.php http://bizcaz.com/archives/2006/12/09-084354.phpRedirect permanent /archives/movabletype/template/archives/2006/12/07-022521.php http://bizcaz.com/archives/2006/12/07-022521.phpRedirect permanent /archives/movabletype/template/archives/2006/11/22-141550.php http://bizcaz.com/archives/2006/11/22-141550.phpRedirect permanent /archives/movabletype/template/archives/2006/10/07-142028.php http://bizcaz.com/archives/2006/10/07-142028.phpRedirect permanent /archives/movabletype/template/archives/2006/10/01-155923.php http://bizcaz.com/archives/2006/10/01-155923.phpRedirect permanent /archives/movabletype/template/archives/2006/09/30-022016.php http://bizcaz.com/archives/2006/09/30-022016.phpRedirect permanent /archives/movabletype/template/archives/2006/09/27-195040.php http://bizcaz.com/archives/2006/09/27-195040.phpRedirect permanent /archives/movabletype/template/archives/2006/09/27-185040.php http://bizcaz.com/archives/2006/09/27-185040.phpRedirect permanent /archives/movabletype/template/archives/2006/09/27-175040.php http://bizcaz.com/archives/2006/09/27-175040.phpRedirect permanent /archives/movabletype/template/archives/2006/09/27-174040.php http://bizcaz.com/archives/2006/09/27-174040.phpRedirect permanent /archives/movabletype/template/archives/2006/09/27-122445.php http://bizcaz.com/archives/2006/09/27-122445.phpRedirect permanent /archives/movabletype/template/archives/2006/09/16-183157.php http://bizcaz.com/archives/2006/09/16-183157.php# 各月別ページをリダイレクトしたい場合Redirect permanent /archives/movabletype/template/archives/2007/04/ http://bizcaz.com/archives/2007/04/index.phpRedirect permanent /archives/movabletype/template/archives/2007/02/ http://bizcaz.com/archives/2007/02/index.phpRedirect permanent /archives/movabletype/template/archives/2007/01/ http://bizcaz.com/archives/2007/01/index.phpRedirect permanent /archives/movabletype/template/archives/2006/12/ http://bizcaz.com/archives/2006/12/index.phpRedirect permanent /archives/movabletype/template/archives/2006/11/ http://bizcaz.com/archives/2006/11/index.phpRedirect permanent /archives/movabletype/template/archives/2006/10/ http://bizcaz.com/archives/2006/10/index.phpRedirect permanent /archives/movabletype/template/archives/2006/09/ http://bizcaz.com/archives/2006/09/index.php
青い字の部分がルートディレクトリ(わたしのサイトのURLでいうとhttp://bizcaz.com/)を基点にしたリダイレクト元ページの相対(絶対)パスです。
赤い字の部分がリダイレクト先のURLになります。
注意することは、上記青い字の部分は必ずウェブサイトのルートディレクトリからの相対(絶対)パスにする必要があります。
ディレクトリ名、ディレクトリ構成が変わったときなどに利用してくださいな ( ̄∇ ̄)/
SEE YOU♪
Trackback Pings(1)
- from
*Marquee Moon
久しく更新していなかったこのブログ。 思い切ってリニューアルしました。 &ldq...
Comments(7)
-
#2: Posted by
bzbell
@ January 30, 2008
[REPLY]

>>1 take さん
こんにちわ^^
> 上のURLにアクセスすると、404 Not Foundと表示されてDL出来ませんでした。
ガーーン
ショック!!
すいませんでした。> お時間がある時にでもまた公開して頂けたらと^^
はい。今はお仕事中なので帰宅しましたら UP しておきます。
今後ともよろしくですの
-
#3: Posted by
dedeoh
@ February 27, 2009
[REPLY]

はじめまして、MT4のphp化にあたり参考にさせていだだきました。
私の場合、個別エントリーへのリダイレクトはうまくいったのですが、カテゴリ、月別、日別アーカイブのインデックスページへの
リダイレクトがうまくいきません。
私の作った.htaccassはこのようになってます。
カテゴリ「diary」の場合
Redirect permanent /diary/ http://●●●.info/diary/index.php
(このサイトのテンプレートを元に作ったものです。.htaccassのことは全く知らなかったのですが、
この場合、同じディレクトリ「/diary/」から、index.phpへリダイレクトさせる記述になっているので、無限ループになってしまうようです。
(参考サイト:http://mikeneko.creator.club.ne.jp/~lab/web/htaccess/redirect.html)試しに以下の記述に変えたのですが、こんどはリダイレクトされません。(ページなしになってしまう)
Redirect permanent /diary/index.html http://●●●.info/diary/index.phpこの際、アーカイブのディレクトリを変えてしまったほうがよいでしょうか?
よきアドバイスをいただけたら幸いです。
-
#4: Posted by
からdedeohへの返信
@ February 27, 2009
[REPLY]

>>3 dedeoh さん
こんばんわ^^
以下のようにやってみてください。Redirect permanent /diary http://●●●.info/diary
最後のスラッシュ「/」は省いてください
-
#5: Posted by
dedeoh
@ February 28, 2009
[REPLY]

bzbellさん
Redirect permanent /diary http://●●●.info/diary
だめでした~
結局、アーカイブを別ディレクトリに移動して、パスを変える事にしました。
ただ、一部のカテゴリでリダイレクトできなくて、カテゴリフォルダ名を代えるとかかなり力技で、なんとかphp化にこぎつけました。次は共有部分の外部化にチャレンジします。
教訓:mtは最初からphpでブログをつくる
ありがとう御座います。
-
#6: Posted by
からdedeohへの返信
@ February 28, 2009
[REPLY]

>>5 dedeoh さん
こんばんわ^^
おかしぃですねぇ

わたしのサイトでは大丈夫なんですけどね。
ちなみにわたしのサイトの .htacces には以下を追加してます。DirectoryIndex index.php index.html .ht
上記はデフォルトインデックスの優先度を指定するものです。 見て分かるように、index.html より index.php を最優先としてます。
-
#7: Posted by
dedeoh
@ March 6, 2009
[REPLY]

bzbelさん
コメント返信いただいてたんですね。
遅れてもうしわけありません。
結局、アーカイブのフォルダを別に作成しても、一部のカテゴリでうまくいかず、
3~.4日苦労してました。ことの顛末は、私のブログにアップしていこうかと思ってます。
トラックバック送りましたので、よろしかったら、承認していただけると幸いです。ちなみに、.htaccessを作っているときに気づいたのですが、
自分でテンプレートの
上のテンプレートの記述だと、リダイレクト元の方は、絶対パスではなくて、
URLとして、出力されませんか?<$MTBlogURL relative_url="1"$>
などを<$MTBlogURL relative_path="1"$>
に直して使用しました。



http://bizcaz.com/archives/shoco/mt/plugins/mt-relativepath.pl
上のURLにアクセスすると、404 Not Foundと表示されてDL出来ませんでした。
Movable Type備忘録さんのエントリーを参考にphp化したばかりなので、MTRelativePathのプラブインも是非インストールしたかったのです。
お時間がある時にでもまた公開して頂けたらと^^