MovableType の移転を.htaccessで簡単に

| コメント(0) | トラックバック(2)

移転完了!

と言っても、同じサイト内ですが(^^;
MT2系にだいぶカスタマイズしていたので、
一部機能はスッパリなくなりました。

移転の際に困ったのが、各記事のファイル名が変わってしまうこと。
従来は 000***.html という連番。
しかし、記事を削除したりしてると、インポートした時に順番が変わってしまうので、移転する際に不便です。
そのためか、MT3からは標準ではキーワードがファイル名になります。

MT2からのバージョンアップをなかなか実行しなかったのは、単純に面倒だったのもあるんですが、この手の問題と、プラグインが動かないなどの問題がでるんじゃないかというのがありました。

で、プラグインなどはスッパリあきらめて、一から再構築。
ファイル名の変更は、サーチエンジンや、他のサイトからのリンクまで変わってしまうのでこれを何とかすることにしました。

Webサイトを移転する時の対処法 : SEO Japan powered by IOIX
http://www.ioix.com/seo/columns/article_22.shtml

こちらによると、.httaccessファイルをつかったリダイレクトで対応するのが良さそうです。

どこかで、MovableType のTipsとして見た記憶があったので検索。

TIPS@BLOG: 今日の大改造
http://tips.bloodb.com/mt/archives/2004/0306155759.html

これですね。
MovableType のテンプレート機能を使って、.htaccessファイルを自動生成してしまうという作戦です。

Movavle Typeのコントロール画面 → BLOGの設定 → アーカイブの設定 を開き、Individual Entry Archiveの「アーカイブ・ファイルのテンプレート」の欄に、紹介されているコードを貼り付けて、保存。BLOGをリビルドすれば、新しいファイルが生成される

ちょっと改良して以下のようにしました。

Redirect

htaccess

<MTArchiveList archive_type="Individual">
Redirect permanent /asmt/archives/<MTEntries><$MTEntryID pad="1"$>.html</MTEntries> http://a-h.parfe.jp/einfach/archives/<MTEntries><$MTArchiveDate
format="%Y/%m%d%H%M%S"$>.html</MTEntries>
</MTArchiveList>


本当は、各カテゴリーや、月ごとのも書き出せるようになれば完璧なのですが、そこまでやる気力がなかったので、パス。
いくつかあった他のBlogの移転などで力尽きてました。
※同じサイト内の移動ですが、転送先はhttpから始まる絶対パスでやらないとエラーが出てしまうようです。
※それと、上のテンプレートだと個別ページのアーカイブが一つ深くなります。相対パスで呼び出すようなものが記事中に含まれていると後で痛い目をみますorz

MT3を設置し、テキストファイルをインポート。

アーカイブのURLが変わらないように:風のまにまに号
http://wandering-wind.jp/archives/2003/1113131950.php

風のまにまに号さんの記事を参考にファイル名が年月日時分秒で書き出されるように変更して再構築。
このままでは、まだ不具合があるのでデータを調整しました。

アドレスの置換

記事中に記載されている、サイト内リンク。
これも全部変更。
MovableType には検索・置換というありがたい機能がついてますので、これを利用しました。

エントリーの検索、置換ツールを使って、エントリー全体を検索したり、言葉を置き換えたりすることができます。重要: 置換するときは注意して使ってください。なぜなら、やりなおしできないからです。置換する前に、エントリーの書き出し機能を使ってバックアップしたほうがいいでしょう。

注意書きを読んだあと、

asmt/archives

einfach/archives

に置換。
サーバーを移転する場合も、これでなんとかなるハズ。
なぜ、今回フォルダを変えたかというと、どうぜリダイレクトするなら変えてみようかと思ったためです。
※そして痛い目をみる、とorz

.htaccessファイルを置いて終了。
と、思ったのですが、各記事中のサイト内リンクのファイル名も変える必要があります。
これがけっこう面倒でした。


検索

正規表現で検索にチェック

einfach/archives/\d+.html


で、出てきた記事のなかのサイト内リンクを、.htaccess ファイルから対照表を作って、それを見ながら手作業で修正(涙)

最後にもう一度検索して確認。


MySQLにしておけば、もう少し簡単にできるのかもしれません。
テンプレートを使ってクエリーを書けば良さそうです。

これにて移転完了。
再構築の際に気がついたのですが、ちょうど、100個目のエントリー。
心機一転! ボチボチ開発していきます(^^;

以下、その後の修正点をメモ

データベースを変更する処理があきらかに以前より遅くなってしまった。
記事の投稿・修正や、コメント・トラックバックの投稿・削除など。
特に、トラックバックはこの遅さだと、投稿されてもタイムアウトしたように見えて多重投稿してしまうことが起こりそうだ。
古いサーバーに新しいOSを入れたんだから、必然的にこうなってしまう。

で、どうも今回のサーバーOSの再インストールで、mod_perlが利用可能になったようなので、以下の記事を参考に、対応させてみようとしたけど、やっぱし権限がないのか失敗orz

てつまる部屋: Synapseでmod_perl
http://www.synapse.ne.jp/mozilla/archives/000017.html

のまのしわざ: MT3.11-jaのmod_perl化メモ
http://blog.group4.co.jp/tnoma/blog/archives/001129.html

MovableType を mod_perl (Apache::Registry) 環境下で動かす方法 : NDO::Weblog
http://naoya.dyndns.org/~naoya/mt/archives/000393.html

以前の記事を参考に、コメントスパムとトラックバックスパム対策。
うわ、危ない。すでに5件ほど来ていた(^^;

<form name="pulldown_monthlyarchives">
<select name="menu" onchange="MM_jumpMenu('parent',this,0)">
<option value="http://a-h.parfe.jp/asmt/" selected="selected">[月別のアーカイブ]</option>
<MTArchiveList archive_type="Monthly">
<option value="<$MTArchiveLink$>"><$MTArchiveTitle$></option>
</MTArchiveList>
</select>
</form>
 
<script language="javascript" type="text/javascript">
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
</script>
 
投稿していただいたコメントのメールアドレスが見えてしまってるので、個別エントリーアーカイブのテンプレートを修正
<p class="posted">投稿者 <$MTCommentAuthorLink default_name="Anonymous" spam_protect="1"$> <MTCommentAuthorIdentity> : <$MTCommentDate$></p>

<p class="posted">投稿者 <$MTCommentAuthor default_name="Anonymous"$> <MTCommentAuthorIdentity> : <$MTCommentDate$></p>
 

余談だが、テンプレートの修正や再構築を行なっているとなんとなく違和感が。
今までは英語で表示されていたものが、すべて日本語訳されているため。
個別ページ(Individual Entry Archive)を再構築したいのに、インデックスを再構築してしまったり(^^;

鬼瓦総合研究所 -Onigawara Research Institute- - MovableTypeでtDiary風「本日のリンク元」を。
http://www.onigawara.net/onilab/modules/tinycontent/index.php?id=3

インデックステンプレート
<MTEntries lastn="1">
<!--#include virtual="./ref_write.cgi?<$MTEntryID$>"-->
</MTEntries>
| 今日のリンク元 [<!--#include virtual="./ref_read.cgi?<$MTEntryID$>+COUNT" -->]

個別ページテンプレート
<!--#include virtual="../../ref_write.cgi?<$MTEntryID$>"-->
<div class="comments-head">Accessed from following URLs...</div>
<UL>
<!--#include virtual="../../ref_read.cgi?<$MTEntryID$>+LIST" -->
</UL>

SEO
<meta http-equiv="keyword" content="<$MTEntryKeywords$>" />
<meta name="descriptions" content="<$MTEntryExcerpt$>" />

各種アフィリエイト

<script type="text/javascript"><!--
google_ad_client = "pub-5961919851536312";
google_ad_width = 680;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_channel ="2754872650";
google_color_border = "336699";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_url = "008000";
google_color_text = "000000";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<script language="JavaScript">
document.write('<scr' + 'ipt language="JavaScript" src="http://a-h.parfe.jp/einfach/jc.cgi?http://app.drk7.jp/AmazonSimilarity.cgi?dev-t=D2E2Z63KQ5TH3G&url='+escape(document.location.href)+'&n=3&ie=utf8&oe=utf8&style=heavy&tl=40&cl=100&t=asociatehelpe-22&idx=Book&footer=1&force=1'+
'"></scr' + 'ipt>');
</script>
<script language="JavaScript">
var keys = <$MTEntryKeywords$>;
var key = keys.split(',');
if (document.all) {
var w=document.body.clientWidth;
w = w - 20;
} else if ((document.layers)||(document.getElementById)) {
var w=window.innerWidth;
w = w - 40;
}
//固定
w=680;
var wid = w / 600;
var h = wid * 128;
document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="'+w+'" height="'+h+'" title="amazie
Flash 広告"><param name="movie" value="http://amazie.jp/swf/yoko3.swf?prm=amazie=0%26Blended='+encodeURI(encodeURI(key[0]))
+'&id=asociatehelpe-22&bg=http://amazie.jp/bg/white3.swf&ref=1&tar=1&pl=25" /><param
name="quality" value="high" /><embed src="http://amazie.jp/swf/yoko3.swf?prm=amazie=0%26Blended='+encodeURI(encodeURI(key[0]))
+'&id=asociatehelpe-22&bg=http://amazie.jp/bg/white3.swf&ref=1&tar=1&pl=25" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'+w+'" height="'+h+'"></embed></object>');
</script>

関連記事
<div class="comments-head">このエントリーに関連するブログエントリーを紹介</div>
<script language="JavaScript">
var url = document.location.href;
var n = 5;
var oe = 'utf-8';
var style = 'lite'; // or 'mt-comments'
var target = '_blank'
document.write('<scr' + 'ipt language="JavaScript" src="http://bulkfeeds.net/app/similar.js?url='
+ escape(url)
+ '&amp;n=' + n + '&amp;style=' + style
+ '&amp;oe=' + oe + '&amp;target=' + target + '"></scr'
+ 'ipt>');
</script>

アクセス解析
<!--#include virtual="../../../fstat/fcount.cgi?LOG=index&MODE=h"-->
<!--#include virtual="../fstat/fcount.cgi?LOG=index&MODE=h"-->

RSSの移転を.htaccessに追記

各サービスをサイドバーに

<div class="link-note">
<h2>BlogPeople</h2>
<a href="javascript:void(bloppop=window.open('http://www.blogpeople.net/addlink.jsp?u=http%3A%2F%2Fa-h.parfe.jp%2Fasmt%2F','blop','scrollbars=no,width=475,height=350,left=75,top=175,status=yes,resizable=yes'));">このページをBlogPeopleに登録</a>
<br/>
<br/>
<script language="javascript" type="text/javascript" src="http://www.blogpeople.net/display/usr/0f0d45525d085016.js"></script><div
class="blogpeople-powered-by">
<br/><br/>
<a href="http://feedmeter.net/detail.php?r=http%3A%2F%2Fa-h.parfe.jp%2Fasmt%2Findex.rdf" target="_feedmeter"><img
src="http://feedmeter.net/image.php?r=http%3A%2F%2Fa-h.parfe.jp%2Fasmt%2Findex.rdf" alt="RSS
feed meter for http://a-h.parfe.jp/asmt/" border="0" height="36" width="60"></a><br/>
<script src="http://trackfeed.com/usr/d6bac4f545.js"></script><br/>
<a href="http://www.bloglines.com/sub/http://a-h.parfe.jp/asmt/index.rdf">
<img src="http://www.bloglines.com/images/sub_modern3.gif" alt="Bloglinesに登録" border="0"></a><br/>
<br/>
<a href="<$MTBlogURL$>index.rdf">Syndicate this site
(XML)</a>
</div>


MyBlogLog

<script type='text/javascript' src='http://track.mybloglog.com/js?mblID=2005031019242531'></script>

プチSEO

<title><$MTEntryTitle$></title>
<div id="banner">
<h1 style="font-size: small;"><$MTEntryTitle$></h1>
<h2 style="font-size: x-large;"><a href="<$MTBlogURL$>" accesskey="1"><$MTBlogName
encode_html="1"$></a></h2>
</div>

インデックスページからの個別ページへのリンクを変更

<a href="<$MTEntryPermalink valid_html="1"$>">単体で読む</a>


カレンダーをAjax対応

diving to ...: Ajax版 月間移動可能なMovableTypeのカレンダー Version2

TOPページにアドセンス

<MTEntries lastn="2" offset="1">

トラックバック(2)

トラックバックURL: http://a-h.parfe.jp/mt6/mt-tb.cgi/100

4/1からCNSのサーバ移行に伴い、movable typeが使えなくなった。 ... 続きを読む

ESCAPE WHILE YOU CAN - deleteoldentry (2005年10月27日 02:04)

.htaccessをいじっていてものすごく疲れた。 おとといくらいに書いたけど、movabletypeのエントリーの アーカイブファイルをエントリー番号からタイ... 続きを読む

コメントする

このブログ記事について

このページは、AUSGANG SOFTが2005年3月25日 17:39に書いたブログ記事です。

ひとつ前のブログ記事は「サーバーメンテナンス×2」です。

次のブログ記事は「amazie 若干修正」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ