.htaccessでphpに自動転送させる
MTをphp化するでご紹介したように、.htmlから.phpに変更した場合
旧URL(.html)にアクセスしたらリンク切れで記事を見ることができなくなってしまいます。
これは、htaccessを使ってphpに自動転送させることによって回避できます。
この記事ではMTのインデックステンプレートを作る事によって
htaccessの中身を自動的に書いてしまう方法をご紹介します。
この記事の方法でうまくいかない方は、
「URLを自動転送させる.htaccessの書き方」で直接.htaccessを書く方法を
ご紹介していますので、そちらをお試しください。
参考にした記事はまたもや
CROSSBREEDさんのエントリーMTのPHP化とページ分割
と、上記記事を参考にして更に詳しく説明している
MT :: luvlogさんのエントリーMovableTypeのphp化 です。
今回は更に補足説明を加えてご紹介いたします。
1・テンプレート画面で新しい「インデックス・テンプレートを作る」をクリックします
2・下のソースを自分用に改変して「テンプレートの中身」に貼り付けます
<MTArchiveList archive_type="Individual">
Redirect permanent /mt/archives/<MTEntries><$MTEntryID pad="1"$>.html</MTEntries> <$MTBlogURL$>mt/archives/<$MTArchiveDate format="%Y%m"$>.php
</MTArchiveList>
赤文字と青文字の所、
必要な方は緑文字の所を変更する必要があります。
赤文字の所は、MTがあるディレクトリから.htmlの前までを入力します。
http://xxx.com/blog/index.htmlというURLだったら、
Redirect permanent /blog/<MTEntries><$MTEntryID pad="1"$>.html
http://xxx.com/blog/archives/index.htmlというURLだったら、
Redirect permanent /blog/archives/<MTEntries><$MTEntryID pad="1"$>.html
という風になります。
青文字の所は記事のURLを指定する方法でご紹介したような方法で
URL生成を指定している場合、そのPermalinkを入れる必要があります。
私の場合は上記記事でも書いているように
<$MTArchiveDate format="%Y/%m%d-%H%M"$>.php
と指定していますので、青文字の部分は
</MTEntries><$MTBlogURL$>mt/archives/<$MTArchiveDate format="%Y/%m%d-%H%M"$>.php
となります。
これをやっていなかったために最初エラーが出てどうしようかと思いました(;´Д`)
緑文字の所は、転送前のURLを記事のURLを指定する方法などで
変更していない場合はそのままで大丈夫です。
変更している場合は適当なものに変更してください。
なお、貼り付けるソースは
・余計な所で改行しては駄目。
・一番最後で必ず改行をすること。
だそうです。こうしないときちんと動かないらしいです。
3・テンプレートの名前と出力ファイル名を適当に付ける
私はテンプレートの名前を「Redirect permanent」
出力ファイル名を「htaccess.txt」にしました。
4・インデックス・テンプレートを再構築するときにこのテンプレートを自動的に
再構築する にチェックが入っているか確認する
5・保存する
6・FTPソフトでファイル名を「htaccess.txt→.htaccess」と変更する
これで、出来ているのではないかと思います。
サーバーによってはパーミッションを変更しないといけないようですので
そこらへんはサーバーの説明をお読みください。
*注意
ソースは改行とスペースに注意する必要があります。
この記事ではスペースの都合により違う所で改行されていますが、
<MTArchiveList archive_type="Individual">◆
Redirect permanent★/mt/archives/<MTEntries><$MTEntryID pad="1"$>.html</MTEntries>★<$MTBlogURL$>mt/archives
/<$MTArchiveDate format="%Y%m"$>.php◆
</MTArchiveList>
◆の所で改行、
★の所は半角スペース
になるようにしてください。
この方法は、MTのバージョンに関係なく使えます。
2007年1月3日更新。





初めまして[ニコッ]
とてもわかりやすく説明してあるサイト様で、
PHP化が簡単に出来ました!
ありがとうございました!!!
ひとつ質問させていただいて宜しいでしょうか?
.htaccessのファイルをアップする度にエラーが出てしまいます[涙]
パーミッションもちゃんと変えたし、
新しい記事のURLも指定する記述もしたのですが…。
PHP化にともなって、URL指定も行ったせいでしょうか?
初心者の質問で恐縮です[汗]
コメント時刻: 2006年10月31日 15:03
≫juncoさん
はじめまして[ポッ]
php化のお手伝いができて嬉しいです♪
エラーは、どういうエラーになるのでしょうか?
考え付くのは・・・
この記事を書いたとき、MTのバージョンが3.1とかだったような気がします。
その時エントリーファイルがarchivesフォルダの中に
できるようになっていたのでこのパスで書いたのですが、
3.3だとデフォルトではarchivesフォルダがなくなっていました。
つまり、古い情報で・・・申し訳ないです。
個別記事のURLに/archives/というものが含まれていない場合
この原因が考えられますので、ソースの中の
archives/という記述を削除して試してみてください。
.htaccessの中のarchives/を直接削除しても大丈夫だと思います。
うまくいかなかったらまた症状をかいてください。
出来うる限り頑張って考えます[!]
コメント時刻: 2006年10月31日 20:10
嬉しいお返事ありがとうございます!![ニコッ]
archives/を消してみましたが、
前回のチャレンジと同じく500エラーでした[タラッ]
バージョンは3.2-ja-2で、記事は個別記事にarchives/は
含まれないから、「これでいける??」と思ったのですが。[涙]
絵文字を是非使えるようになりたいので、頑張ります☆
コメント時刻: 2006年10月31日 21:24
≫juncoさん
500エラーは、.htaccessの文法ミス、CGIの異常終了、
または.htaccessが使えないサーバーでアップすると出てしまうようです。
まず、最後の行に改行が入っているかチェックしてください。
次に、.htaccessがアスキーモードで転送されているかチェックしてください。
それが出来ていて駄目な時は、.htaccessの中を見てみてください。
自動転送させる記述は、
Redirect permanent(半角スペース)転送元URL(半角スペース)転送先URL(改行)
となっていれば正しいです。
http://abc.com/blog/xxx/1234.html という所から
http://abc.com/blog/vvv/1234.php という所に転送させたい場合
Redirect permanent /blog/xxx/1234.html http://abc.com/blog/v
vv/1234.php
となっていれば転送されるはずです。
あ、上の記述で1行として、横にズラズラ並ばないように改行が必要です。
私が書いているタグがまずいかもしれません[ゲッソリ]
転送元と転送先のURLが分かっているならば、手動で.htaccess内を
いじってやるという手もあります。
手動で.htaccessをいじった場合、テンプレートを作って.htaccessを作成した時は、
そのテンプレートを削除するのを忘れないでください。
再構築した時に上書きされてしまうかもしれませんので[ビックリ]
サイトを拝見させていただきました。記事が多そうなので
ひとつひとつ手動は大変かもしれませんので
htmlの時のURLを教えていただければ、専用のタグが作れるかもしれません。
私の身内にも同じ病の人がいます。
更に理解を深める為にゆっくりと読ませていただきます。
カスタマイズと共にお互いがんばりましょう[ポッ]
コメント時刻: 2006年11月01日 00:32
ご丁寧にありがとうございます!!!!!![キラキラ]
しかもブログを見ていただけるなんてー!!![祝]
>htmlの時のURLを教えていただければ、専用のタグが作れるかもしれません。
htmlの時のURL、どの部分を書けばいいのかわからなかったので、
前のパーマリンクの指定をしていなかった時のURLを書いてみます!
2006年の10月17日に書いた記事のURLは
http://utu-junco.com/blog/2006/10/post_293.html
となっていました。ですが…。
記事のタイトルがアルファベットの時だけ、例えば10月15日は
http://utu-junco.com/blog/2006/10/love_song.html
となってるんです[!]
ランダム過ぎますよね…[涙]
自分で調べてビックリしました。[ブレイク]
コメント時刻: 2006年11月02日 01:27
≫juncoさん
キャーー!!コメント承認待ちになってて気づいていませんでした。
ごめんなさい[えーん]
ふふ・・・URLのランダム具合はMTの初期設定のままだとそうなるので心配ありませんよ。
えーっと、そのURLだとタグは・・・
<MTArchiveList archive_type="Individual">
Redirect permanent /blog/<MTEntries><$MTArchiveDate format="%Y/%m/"$><MTEntryBasename>.html <$MTBlogURL$>blog/<$MTArchiveDate format="%Y/%m%d-%H%M"$>.php
</MTArchiveList>
これでどうでしょう!?
<MTEntryBasename>.html <$MTBlogURL$>
の間は改行せずに、半角スペースを空けてください。
駄目だったらまたご連絡を・・・[汗]
コメント時刻: 2006年11月04日 16:26