Perl5.18, MT6, 301 redirect

Window XP のサポート終了が間近に迫り,会社では職場で古い機械を使っている者は Windows 7 / 8 への移行完了をフォローされている。職場ではもっぱらセキュア PC(センタにあるサーバ上の仮想化された個人 PC 環境を手元の thin client PC から使う。社外へのデータの持ち出しなど出来なくっている。大型汎用機を TSS 端末で繋いで使う時代に戻りつつあるようだ)が義務付けられており,私の環境はセンタ管理者が移行してくれていた。

Windows XP は四月九日以降もモノとしては動くわけだが,サポートが終了するということはセキュリティパッチをはじめ何の対策もされなくなるということであり,これに伴い必然的に Windows アプリも XP 版のメンテナンスを停止してしまう。標準型メールトラップなど,もっぱら中国・北朝鮮によるサイバー攻撃が身近なところで激化している昨今,セキュリティメンテナンスのされない計算機を企業は怖くて使えないのである。

かくしてコンピュータというものは黙っていても新しい製品が売れてゆくようになっている。

ウチの FreeBSD ももはや二世代くらい古くなってしまった。ports(パッケージ管理ソフトウェア)によるソフトウェア更新でエラーが出まくる状況に苦しめられている。いい加減バージョンアップをしないといけないのだが,自宅の機械については面倒が先に立って,なかなか決意出来ない。

スパムメールの撃退ソフトである SpamAssassin を新しい版にしようとしたら,関連 Perl モジュールの版の関係でうまく行かない。しようがなく Perl を 5.10 から 5.18 にバージョンアップすることにした。ports の依存関係にあるソフトウェアもなんとか整合性を付けた。SpamAssassin 新版もきちんと動くようになった。

# pkgdb -Ff
# portupgrade -fr lang/perl5.18

ところが ports 管理外にあるブログ管理ソフト Movable Type 5(MT5)でエラーが出る。原因はよくわからない。MT::Template 関連コードに,Perl5.18 文法にそぐわないところがあるようだ。

failed loading package MT::Template::Tags::Comment for 
routine MT::Template::Tags::Comment::_hdlr_comments: 
Attempt to reload MT/Template/Tags/Comment.pm aborted. 
Compilation failed in require

記事の登録・更新だけではなく,メンテナンスツールもダメである。かくして芋づる式に,MT も版を上げなくてはならなくなった。目の前が暗くなる。MT6 にすると,過去の記事やらデザインやらのチョー面倒な移行作業を行わなければならない。

てゆうか,エラー出まくりの MT5 環境で,どうやって記事,テーマのバックアップを取ればいいんだ? 面倒云々どころではない。悩んだ挙句,FreeBSD 環境の MT5 ツリー(HTML, CGI, SQLite3 DB の一式)をごっそり Mac OS に持って来ることにした。mt-config.cgi を Mac OS 環境向けに編集し,Mac 上で MT5 の管理画面を起動した。ドキュメントルートの関係で記事の更新はともかく,記事・テーマのエクスポートが出来るようになり,胸を撫で下ろした。

MT6 設置のため,そのドキュメントに目を通す。Perl5.18 は未検証のため推奨しない,とある。う,Perl5.16 にしておくべきだったか。しかしいまさら後戻りをする気はなかった。結果的に Perl5.18 でもすんなり MT6 導入が完了し,MT5 でエクスポートした記事も MT6 にインポートでき,問題なく動いている(いまのところは)。MT6 は,サイト再構築が驚くほど高速になった(考えてみれば,これは月別・カテゴリー別アーカイブをさぼるように MT が仕様変更されたからに過ぎないが)。デザインの調整はゆくゆく少しずつ。

今回の MT6 へのブログシステム更改に伴い,ドメインを yasuda.homeip.net に統合した。旧い URL でアクセスして来た方のためにリダイレクト設定をすることにした。リダイレクト(ブラウザからのページ要求を別の URL にすっ飛ばすこと。サイトの引っ越し等の事由でよく例をみる)の仕方はいろいろあるが,いわゆる 301 リダイレクト方式にした。これなら検索エンジンも追従できるはずだ。もっとも,リダイレクトによってエロサイトや商品販売サイトに飛ばす不埒なゴミサイトが蔓延しているため,Google などは 301 リダイレクト先ページについて元ページの情報 — ページランクなどの — を引き継ぐことに制限を設けたらしいのだが。

301 リダイレクトをさせるには,以下のような内容の .htaccess ファイルを用意し,旧 URL サイトのドキュメントルートに設置しておく。前提条件として,Apache に mod_rewrite モジュールが組み込まれていなければならない。また Apache httpd.conf の旧 URL ホスト設定において,AllowOverride ディレクティブに対し,少なくとも FileInfo が指定されていなければならない(詳しくは Apache チュートリアル: .htaccess ファイル を参照)。

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://yasuda.homeip.net/$1 [R=301,L]