tdsとの共存

いままでのhttp://diary.mrmt.net/tdsを動かしていたVirtualHostだったが、このVirtualHostを別の名前にする。

新diary.mrmt.netのVirtualHost定義に以下を追加して、/tds以下へのアクセスをそのtds virtual hostにプロキシするようにする。

ProxyRequests Off

ProxyPass /tds tdsバーチャルホスト

ProxyPassReverse /tds tdsバーチャルホスト

そのtds virtual hostには、このホストからのproxyでしかアクセスにこない。つまり、このホスト自身が「中の人tds」にプロキシするというアクセスパターンしかない。なのでtds virtual hostは自分からのアクセス以外denyする。(ほんとはport変えたりして外界からは一切見えないようにするのがよろしいが、まあ適当でいいや)

2005年以前のtdsなURLへのアクセスを/tds以下にリダイレクトして、「こっそりtdsが動いている中の人」にプロキシする。tdsで使っていたcssとかグラフィックパーツ群も。

RewriteEngine on

RewriteRule ^/(200[0-5].*) /tds/$1 [P,L]

RewriteRule ^/(TsDiary?.cgi.*) /tds/$1 [P,L]

RewriteRule ^/tds.css /tds/tds.css [P,L]

RewriteRule ^/([a-z]*?.png) /tds/$1 [P,L]

tds時代のrssへのアクセスを現行のものにリダイレクト。Rしないほうが、より多くのRSSリーダに対応できるような気がするが、(というか302に追従できないタコなRSSリーダがあったりするんじゃないかという読み)まあRしたほうが俺はすっきりするし、そんなタコなものは知らないや。

RewriteRule ^/rss091.cgi /rss [R,L]

RewriteRule ^/rss100.cgi /rss [R,L]

2006年にはいってからのtds記事は全部nucleusに移行させたので、2006/1/1以降のtds記事への個別リンクをnucleusのそれにリダイレクト。

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]

(tds自身が「http://hostname/YYYY/MM/DD」みたいなURLでのアクセスに対応していたわけではない。俺が勝手にmod_rewrite使ってこのようにしていた)

あとは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();

}

}