いままでのhttp://diary.mrmt.net/はtdsを動かしていたVirtualHostだったが、このVirtualHostを別の名前にする。
新diary.mrmt.netのVirtualHost定義に以下を追加して、/tds以下へのアクセスをそのtds virtual hostにプロキシするようにする。
そのtds virtual hostには、このホストからのproxyでしかアクセスにこない。つまり、このホスト自身が「中の人tds」にプロキシするというアクセスパターンしかない。なのでtds virtual hostは自分からのアクセス以外denyする。(ほんとはport変えたりして外界からは一切見えないようにするのがよろしいが、まあ適当でいいや)ProxyRequests Off
2005年以前のtdsなURLへのアクセスを/tds以下にリダイレクトして、「こっそりtdsが動いている中の人」にプロキシする。tdsで使っていたcssとかグラフィックパーツ群も。
RewriteEngine on
RewriteRule ^/(200[0-5].*) /tds/$1 [P,L]
RewriteRule ^/(TsDiary?.cgi.*) /tds/$1 [P,L]
tds時代のrssへのアクセスを現行のものにリダイレクト。Rしないほうが、より多くのRSSリーダに対応できるような気がするが、(というか302に追従できないタコなRSSリーダがあったりするんじゃないかという読み)まあRしたほうが俺はすっきりするし、そんなタコなものは知らないや。
2006年にはいってからのtds記事は全部nucleusに移行させたので、2006/1/1以降のtds記事への個別リンクをnucleusのそれにリダイレクト。
(tds自身が「http://hostname/YYYY/MM/DD」みたいなURLでのアクセスに対応していたわけではない。俺が勝手にmod_rewrite使ってこのようにしていた)RewriteRule ^/2006/([0-9][0-9])/([0-9][0-9]) /archive/1/2006-$1-$2 [R,L]
RewriteRule ^/2006/([0-9][0-9]) /archive/1/2006-$1 [R,L]
あとはnucleusのほうで、「http://hostname/?YYYYMMDD」なQUERY_STRINGに対処。index.phpの頭のほうに
if($_SERVER['QUERY_STRING']){
if(preg_match('/^(20?d?d)(?d?d)(?d?d)$/', $_SERVER['QUERY_STRING'], $matches)) {
header("HTTP/1.1 301 Moved Permanently");
header('Location: http://diary.mrmt.net/' . $matches[1] . '/' . $matches[2] . '/' . $matches[3]);
exit();
}
if(preg_match('/^(20?d?d)(?d?d)$/', $_SERVER['QUERY_STRING'], $matches)) {
header("HTTP/1.1 301 Moved Permanently");
header('Location: http://diary.mrmt.net/' . $matches[1] . '/' . $matches[2]);
exit();
}
}