月別過去ログ

« 最近のコメントとトラックバックの表示法 | メイン | 文字サイズの変更法 »

.htaccessでphpに自動転送させる

2005年05月10日

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日更新。

トラックバック (3)

◇重複トラックバックはこっそり削除しますのでお気になさらないでください。
◇トラックバックスパムと判断しましたらサックリ削除いたしますのでご了承ください。

この一覧は、次のエントリーを参照しています: .htaccessでphpに自動転送させる:

» ブログのPHP化 ( FAKE BLOG )
以前、カテゴリーページの分割の際、カテゴリーページだけPHP化したのですが、 他のページもPHP化したほうが良さそうなので、下記の記事を参考に作業をしました。 ...

» html⇒php 旧サイトをブログ化。 ( Hesokuri-Way×へそくりライフ )
PHP化後、以前の??aaa.htmlからの訪問を??aaa.phpに飛ばす

» MT FC2ブログ : 記事の移行の注意点(インポート/エキスポート) ( kubolog - クボログ:久保のブログ - )
「kubolog - クボログ:久保のブログ - 」は、 2007 3/25にF...

コメント (6)
» 投稿者: junco

初めまして[ニコッ]
とてもわかりやすく説明してあるサイト様で、
PHP化が簡単に出来ました!
ありがとうございました!!!

ひとつ質問させていただいて宜しいでしょうか?

.htaccessのファイルをアップする度にエラーが出てしまいます[涙]

パーミッションもちゃんと変えたし、
新しい記事のURLも指定する記述もしたのですが…。

PHP化にともなって、URL指定も行ったせいでしょうか?

初心者の質問で恐縮です[汗]

» 投稿者: りぃ

≫juncoさん
はじめまして[ポッ]
php化のお手伝いができて嬉しいです♪

エラーは、どういうエラーになるのでしょうか?

考え付くのは・・・
この記事を書いたとき、MTのバージョンが3.1とかだったような気がします。
その時エントリーファイルがarchivesフォルダの中に
できるようになっていたのでこのパスで書いたのですが、
3.3だとデフォルトではarchivesフォルダがなくなっていました。

つまり、古い情報で・・・申し訳ないです。

個別記事のURLに/archives/というものが含まれていない場合
この原因が考えられますので、ソースの中の
archives/という記述を削除して試してみてください。

.htaccessの中のarchives/を直接削除しても大丈夫だと思います。

うまくいかなかったらまた症状をかいてください。
出来うる限り頑張って考えます[!]

» 投稿者: junco

嬉しいお返事ありがとうございます!![ニコッ]

archives/を消してみましたが、
前回のチャレンジと同じく500エラーでした[タラッ]

バージョンは3.2-ja-2で、記事は個別記事にarchives/は
含まれないから、「これでいける??」と思ったのですが。[涙]

絵文字を是非使えるようになりたいので、頑張ります☆

» 投稿者: りぃ

≫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を教えていただければ、専用のタグが作れるかもしれません。

私の身内にも同じ病の人がいます。
更に理解を深める為にゆっくりと読ませていただきます。
カスタマイズと共にお互いがんばりましょう[ポッ]

» 投稿者: junco

ご丁寧にありがとうございます!!!!!![キラキラ]
しかもブログを見ていただけるなんてー!!![祝]

>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

となってるんです[!]


ランダム過ぎますよね…[涙]

自分で調べてビックリしました。[ブレイク]

» 投稿者: りぃ

≫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$>
の間は改行せずに、半角スペースを空けてください。
駄目だったらまたご連絡を・・・[汗]

コメントを投稿

◇コメントスパムと判断しましたらサックリ削除いたします。ご了承ください。

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

おしらせ
  • このサイトの更新を停止いたします。詳細は「更新停止します」の記事に書いてありますのでそちらをご覧ください。
    日記サイトpi:s、WordPressのカスタマイズをメモしておく
    WordPress*Memoはこっそり更新していきます(`・ω・´)
    今までありがとうございました。-りぃ-
blog status
  • 利用中サーバー
  •  エックスサーバー
  • 利用中ドメイン登録代行サービス
  •  VALUE-DOMAIN

  • 記事数 : 51
  • コメント数 : 207
  • トラックバック数 : 53
  • カウンターカウンター
    カウンターカウンター カウンターカウンター
  • お気に入りに追加
  • track feed