tdsとの共存

tech

いままでの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();
  }
}

コメント

2 Comments

  1. masao
    記事本体と関係ないコメントで恐縮なのですが、 http://diary.mrmt.net/rss RSSの中に以下のURLへの画像リンクが埋め込まれていて、RSSリーダで読んでいると画像を取りにいこうとして「Authorization Required」になるので、はずしていただけると、ありがたいです。 http://diary.mrmt.net//nucl...
  2. Jun Morimoto
    これは気づいていませんでした。修正しました。ご指摘ありがとうございます。