Movable Type 備忘録

 MovableTypeで楽にリダイレクトする

サイト内のディレクトリ構成変更または、ディレクトリ名、ページ名を変更してしまうと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ではありませんのでお間違えないように

  1. まず、プラグインをインストールします。
    以下のMTRelativePathプラグインをインストールすることで、ウェブサイトのURLからルートディレクトリのパスに変換してくれます。

    インストール先はいつものように、mt/plugins/ディレクトリの中にアップロードしてください。

  2. 次にリダイレクト用にインデックス・テンプレートを作成します。
    MovableType(ムーバブルタイプ)管理画面からブログを選択して、左サイドバーにある「テンプレート」をクリックします。
    そして、画面右上にある「テンプレートを新規作成」をクリックしてください。

    入力内容は以下の通りです。

    1. テンプレート名:htaccess
    2. 出力ファイル名:htaccess.txt
    3. このテンプレートにリンクするファイル:未記入でいいです。
    4. テンプレートの内容:以下のコードをコピペします。
    1. # トップページをリダイレクトする場合
    2. Redirect permanent <$MTBlogURL relative_url="1"$>index.html <$MTBlogURL$>index.php
    3.  
    4. # 各エントリをリダイレクトする場合
    5. <MTEntries lastn="0">
    6.     Redirect permanent <$MTEntryPermalink relative_url="1"$> <$MTBlogArchiveURL$><MTEntryDate format="%Y/%m/%d-%H%M%S"$>.php
    7. </MTEntries>
    8.  
    9. # 各カテゴリをリダイレクトする場合
    10. <MTArchiveList archive_type="Category">
    11.     Redirect permanent <$MTArchiveLink relative_url="1"$> <$MTArchiveLink$>index.php
    12. </MTArchiveList>
    13.  
    14. # 各月別ページをリダイレクトする場合
    15. <MTArchiveList archive_type="Monthly">
    16.     Redirect permanent <$MTArchiveLink relative_url="1"$> <$MTArchiveLink$>index.php
    17. </MTArchiveList>
    18.  
    19. # 各日別ページをリダイレクトする場合
    20. <MTArchiveList archive_type="Daily">
    21.     Redirect permanent <$MTArchiveLink relative_url="1"$> <$MTArchiveLink$>index.php
    22. </MTArchiveList>

    上記はブログのPHP化のときに使った、.htaccess用のコードになります。

    青い字の部分が現在のルートディレクトリからの絶対パスとなります。
    赤い字の部分がリダイレクト先のURLです。

    上記は、ディレクトリ名が変わったとか、ファイル名が変わったなど、同じサイト内でリダイレクトさせる例ですが、サーバー移転など、別なURLにリダイレクトしたい場合には以下のようなコードになります。

    1. # トップページをリダイレクトしたい場合
    2. Redirect permanent <$MTBlogURL relative_url="1"$>index.html ●●●/index.html
    3.  
    4. # 各エントリをリダイレクトしたい場合
    5. <MTEntries lastn="0">
    6.     Redirect permanent <$MTEntryPermalink relative_url="1"$> ●●●/<MTEntryDate format="%Y/%m/%d-%H%M%S"$>.html
    7. </MTEntries>
    8.  
    9. # 各カテゴリをリダイレクトしたい場合
    10. <MTArchiveList archive_type="Category">
    11.     Redirect permanent <$MTArchiveLink relative_url="1"$> ●●●/<$MTCategoryLabel dirify="1"$>/index.html
    12. </MTArchiveList>
    13.  
    14. # 各月別ページをリダイレクトしたい場合
    15. <MTArchiveList archive_type="Monthly">
    16.     Redirect permanent <$MTArchiveLink relative_url="1"$> ●●●/<MTArchiveDate format="%Y/%m/"$>index.html
    17. </MTArchiveList>
    18.  
    19. # 各日別ページをリダイレクトしたい場合
    20. <MTArchiveList archive_type="Daily">
    21.     Redirect permanent <$MTArchiveLink relative_url="1"$> ●●●/<MTArchiveDate format="%Y/%m/%d/"$>index.html
    22. </MTArchiveList>

    作成された htaccess.txt 内の青い字の部分にあたるところを、リダイレクト先のURLで一括置換すれば楽ですよね。
    また、個別エントリのファイル名が異なる場合は…大変ですが1つ1つ直すしかないです (; ̄∇ ̄A

  3. 一通り入力したら、保存してこのリダイレクト用のインデックス・テンプレートのみ再構築します。
    再構築すると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    <--- ここにおくことでリダイレクトされます

上記はディレクトリ以下に存在するエントリページ、月別ページにアクセスされたら、以下に示すリダイレクト先に変換するようにしています。

  1. .htaccess
  2.  
  3. # 各エントリをリダイレクトしたい場合
  4. Redirect permanent /archives/movabletype/template/archives/2007/04/01-021005.php http://bizcaz.com/archives/2007/04/01-021005.php
  5. Redirect permanent /archives/movabletype/template/archives/2007/02/25-211414.php http://bizcaz.com/archives/2007/02/25-211414.php
  6. Redirect permanent /archives/movabletype/template/archives/2007/02/25-002859.php http://bizcaz.com/archives/2007/02/25-002859.php
  7. Redirect permanent /archives/movabletype/template/archives/2007/02/11-214915.php http://bizcaz.com/archives/2007/02/11-214915.php
  8. Redirect permanent /archives/movabletype/template/archives/2007/02/05-195215.php http://bizcaz.com/archives/2007/02/05-195215.php
  9. Redirect permanent /archives/movabletype/template/archives/2007/02/05-011951.php http://bizcaz.com/archives/2007/02/05-011951.php
  10. Redirect permanent /archives/movabletype/template/archives/2007/01/21-194045.php http://bizcaz.com/archives/2007/01/21-194045.php
  11. Redirect permanent /archives/movabletype/template/archives/2007/01/14-165458.php http://bizcaz.com/archives/2007/01/14-165458.php
  12. Redirect permanent /archives/movabletype/template/archives/2007/01/08-171147.php http://bizcaz.com/archives/2007/01/08-171147.php
  13. Redirect permanent /archives/movabletype/template/archives/2007/01/02-054526.php http://bizcaz.com/archives/2007/01/02-054526.php
  14. Redirect permanent /archives/movabletype/template/archives/2006/12/31-130040.php http://bizcaz.com/archives/2006/12/31-130040.php
  15. Redirect permanent /archives/movabletype/template/archives/2006/12/30-024643.php http://bizcaz.com/archives/2006/12/30-024643.php
  16. Redirect permanent /archives/movabletype/template/archives/2006/12/29-231235.php http://bizcaz.com/archives/2006/12/29-231235.php
  17. Redirect permanent /archives/movabletype/template/archives/2006/12/29-194141.php http://bizcaz.com/archives/2006/12/29-194141.php
  18. Redirect permanent /archives/movabletype/template/archives/2006/12/23-144858.php http://bizcaz.com/archives/2006/12/23-144858.php
  19. Redirect permanent /archives/movabletype/template/archives/2006/12/15-182221.php http://bizcaz.com/archives/2006/12/15-182221.php
  20. Redirect permanent /archives/movabletype/template/archives/2006/12/10-193209.php http://bizcaz.com/archives/2006/12/10-193209.php
  21. Redirect permanent /archives/movabletype/template/archives/2006/12/09-084354.php http://bizcaz.com/archives/2006/12/09-084354.php
  22. Redirect permanent /archives/movabletype/template/archives/2006/12/07-022521.php http://bizcaz.com/archives/2006/12/07-022521.php
  23. Redirect permanent /archives/movabletype/template/archives/2006/11/22-141550.php http://bizcaz.com/archives/2006/11/22-141550.php
  24. Redirect permanent /archives/movabletype/template/archives/2006/10/07-142028.php http://bizcaz.com/archives/2006/10/07-142028.php
  25. Redirect permanent /archives/movabletype/template/archives/2006/10/01-155923.php http://bizcaz.com/archives/2006/10/01-155923.php
  26. Redirect permanent /archives/movabletype/template/archives/2006/09/30-022016.php http://bizcaz.com/archives/2006/09/30-022016.php
  27. Redirect permanent /archives/movabletype/template/archives/2006/09/27-195040.php http://bizcaz.com/archives/2006/09/27-195040.php
  28. Redirect permanent /archives/movabletype/template/archives/2006/09/27-185040.php http://bizcaz.com/archives/2006/09/27-185040.php
  29. Redirect permanent /archives/movabletype/template/archives/2006/09/27-175040.php http://bizcaz.com/archives/2006/09/27-175040.php
  30. Redirect permanent /archives/movabletype/template/archives/2006/09/27-174040.php http://bizcaz.com/archives/2006/09/27-174040.php
  31. Redirect permanent /archives/movabletype/template/archives/2006/09/27-122445.php http://bizcaz.com/archives/2006/09/27-122445.php
  32. Redirect permanent /archives/movabletype/template/archives/2006/09/16-183157.php http://bizcaz.com/archives/2006/09/16-183157.php
  33.  
  34. # 各月別ページをリダイレクトしたい場合
  35. Redirect permanent /archives/movabletype/template/archives/2007/04/ http://bizcaz.com/archives/2007/04/index.php
  36. Redirect permanent /archives/movabletype/template/archives/2007/02/ http://bizcaz.com/archives/2007/02/index.php
  37. Redirect permanent /archives/movabletype/template/archives/2007/01/ http://bizcaz.com/archives/2007/01/index.php
  38. Redirect permanent /archives/movabletype/template/archives/2006/12/ http://bizcaz.com/archives/2006/12/index.php
  39. Redirect permanent /archives/movabletype/template/archives/2006/11/ http://bizcaz.com/archives/2006/11/index.php
  40. Redirect permanent /archives/movabletype/template/archives/2006/10/ http://bizcaz.com/archives/2006/10/index.php
  41. Redirect 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)

#1: Posted by take @ January 30, 2008 [REPLY]
user-pic

http://bizcaz.com/archives/shoco/mt/plugins/mt-relativepath.pl

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

#2: Posted by Author Profile Page bzbell @ January 30, 2008 [REPLY]
user-pic

>>1 take さん

こんにちわ^^

> 上のURLにアクセスすると、404 Not Foundと表示されてDL出来ませんでした。

ガーーンあせあせ ショック!!
すいませんでした。

> お時間がある時にでもまた公開して頂けたらと^^

はい。今はお仕事中なので帰宅しましたら UP しておきます。

今後ともよろしくですのテレテレ

#3: Posted by Author Profile Page dedeoh @ February 27, 2009 [REPLY]
user-pic

あせあせ

はじめまして、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 Author Profile Page bzbellからdedeohへの返信 @ February 27, 2009 [REPLY]
user-pic

>>3 dedeoh さん

こんばんわ^^

以下のようにやってみてください。
Redirect permanent /diary http://●●●.info/diary
最後のスラッシュ「/」は省いてくださいふつう
#5: Posted by Author Profile Page dedeoh @ February 28, 2009 [REPLY]
user-pic

bzbellさん

Redirect permanent /diary http://●●●.info/diary

だめでした~グウグウ

結局、アーカイブを別ディレクトリに移動して、パスを変える事にしました。
ただ、一部のカテゴリでリダイレクトできなくて、カテゴリフォルダ名を代えるとかかなり力技で、なんとかphp化にこぎつけました。

次は共有部分の外部化にチャレンジします。

教訓:mtは最初からphpでブログをつくる

ありがとう御座います。

#6: Posted by Author Profile Page bzbellからdedeohへの返信 @ February 28, 2009 [REPLY]
user-pic

>>5 dedeoh さん

こんばんわ^^

おかしぃですねぇあせあせ
わたしのサイトでは大丈夫なんですけどね。
ちなみにわたしのサイトの .htacces には以下を追加してます。

DirectoryIndex index.php index.html .ht
上記はデフォルトインデックスの優先度を指定するものです。 見て分かるように、index.html より index.php を最優先としてます。
#7: Posted by Author Profile Page dedeoh @ March 6, 2009 [REPLY]
user-pic

bzbelさん

コメント返信いただいてたんですね。
遅れてもうしわけありません。あせあせ

結局、アーカイブのフォルダを別に作成しても、一部のカテゴリでうまくいかず、
3~.4日苦労してました。

ことの顛末は、私のブログにアップしていこうかと思ってます。
トラックバック送りましたので、よろしかったら、承認していただけると幸いです。

ちなみに、.htaccessを作っているときに気づいたのですが、
上のテンプレートの記述だと、リダイレクト元の方は、絶対パスではなくて、
URLとして、出力されませんか?

自分でテンプレートの
<$MTBlogURL relative_url="1"$>
などを
<$MTBlogURL relative_path="1"$>
に直して使用しました。

 Post a Comment

 

コメント用フィード