Redmine のバージョンを大幅に上げた。
ここで一つ困ったことが発生。Redmine のバージョンが上がって、URL が変わった。変わったのはチケットを番号で指定する URL。
- (旧) http://myserver.com/issues/show/番号
- (新) http://myserver.com/issues/番号
ご覧の通り赤字で書いた「show」という文字列が抜けた。URL がスッキリして良くなったと思う。
問題は、過去の文書資産 — 過去メールや他のドキュメント — に旧 URL が使われていること。全ての文書の URL を直すのは大変なので、旧 URL でアクセスしたら 新 URL に自動的に移るようにした。これを URL のリダイレクトという。
Apache の rewrite 設定
まず、Apache に rewrite 用のモジュール mod_rewrte が入っているかどうかを確認。
$ sudo apache2ctl -M | grep rewrite Syntax OK rewrite_module (shared)
うん、rewirte 用のモジュールが入っている (入ってない人は、頑張って入れて下さい)。
Apache の設定ファイルを変更 (追記部分を青字で書いた)。
<VirtualHost *:80>
ServerName myserver.com
DocumentRoot /var/redmine/public
RewriteEngine On
RewriteRule ^/issues/show/(.+)$ /issues/$1 [R]
</VirtualHost>
RewriteRule
の末尾にある [R]
はリダイレクトするための設定。このコードがないと、新しい Redmine の URL に旧 URL でアクセスできる様になる。見る分には問題ないけれど、URL をコピーする時に旧 URL をわざわざコピーさせるのはスマートじゃない。リダイレクトすると、旧 URL でアクセスすると URL は新 URL に変わる。
Apache を再起動すれば、リダイレクトが効くようになる。
あとがき
Redmine を久々にアップグレードして、その変化の大きさに驚いている。地味ながら、結構不満になったのが、今回の URL 問題。正規表現が使えると知るまでは、どうしようかと悩んだ。
- ref. mod_rewrite - Apache HTTP Server (詳しすぎて分からない!)
- ref. mod_rewriteのインストール・設定 - RewriteRuleのサンプル [Fedora, RedHat, CentOS] - Linux (丁度いい分量)
No comments:
Post a Comment