dh memoranda

徒然なるままに日暮らしブログに向かいて...

mod_perl化した MT での RewriteRule

以前、naoyaさんやいろいろな方が書いていますが、mod_perl/Apache::Register 化すると「重い、遅い」といわれる Movable Typeでも非常に早くなるんですが、標準のインストール方法だと、mt-comments.cgi というのから mt/comment?... とパスも変わり、ページを再構築しないといけません。さらに、古いページテンプレートを使っていると、CGIの名前は直に埋めこみなので、Template を書きかえる必要もあります。こういうとき面倒くさがり屋さんは Apache の Rewrite Engine を使うと便利です。

まずは、apache が Rewrite Engine を使えるかどうかを確認しましょう。mod_rewrite というモジュールになっていますので、httpd -l なり、サーバの設定ファイルをチェックするなりして調べてください。

使えることがわかれば設定です。次のような設定を追加します。

RewriteEngine On
RewriteRule ^/cgi-bin/mt.cgi(.*) /mt/app$1
RewriteRule ^/cgi-bin/mt-tb.cgi(.*) /mt/trackback$1
RewriteRule ^/cgi-bin/mt-search.cgi(.*) /mt/search$1
RewriteRule ^/cgi-bin/mt-xmlrpc.cgi /mt/xmlrpc


てな感じです。/cgi-bin/ は環境などにも依存するでしょうから、うまく書きかけてください。(最初 [R,L]をつけていましたが、リダイレクトだとPOST のときに問題がありましたので、[R,L] は外してください)
また、わたしのように古いテンプレートのため直書きになっていた方は

RewriteRule ^/mt/mt-tb.cgi(.*)  /mt/trackback$1
RewriteRule ^/mt/mt-comments.cgi(.*)  /mt/comments$1
RewriteRule ^/mt/mt-search.cgi(.*)  /mt/search$1

も付けておくといいでしょう。テンプレートを書きかえるまでの間しか使えませんが...。わたしのサーバでは、いたるところで RewriteEngine を使っています。