Pukiwikiのサーバを移転させた際に、旧サイトへのWikiアクセスを新サイトに転送するためのApacheのmod_rewriteではまったのでメモ。Query Stringがエンコードされないように、フラグにNEを追加する必要がある。
□ Pukiwiki移転の際に便利なmod_rewriteの設定メモ Apache環境でPukiwikiを使っている場合、Apacheのmod_rewriteモジュールを 利用することで、旧Wikiへのアクセスを新Wikiに転送させることができる。 下記の例の場合、Apacheでmod_rewriteモジュールが有効になっており .htaccess が利用可能に設定されていることが前提条件。 pukiwikiなどでは、日本語などの2バイト文字を含んだページ名は URLエンコードされたURLとして表示される。 下記は、Pukiwikiでの"Javaメモ"というページのURLの例。 http://example.com/wiki/index.php?Java%A5%E1%A5%E2 しかしながら、Apacheのmod_rewriteを使って、ページ構成を変えずに 他のサイトに転送しようとすると、以下のようなアドレスにアクセスしようとして、 Pukiwikiの"Java%25A5%25E1%25A5%25E2"という編集ページに飛んでしまいます。 * wikiディレクトリに作成した .htaccessの例 ----------------------------------------------------------- RewriteEngine on RewriteRule ^(.*)$ http://example.net/wiki/$1 [R=301,L] ----------------------------------------------------------- * アクセス先URL -------------------------------------------------------------------------- http://example.net/wiki/index.php?Java%25A5%25E1%25A5%25E2 -------------------------------------------------------------------------- これは、query string中に含まれる"%"の文字がmod_rewriteで転送させる際に エスケープされ、"%25"になってしまうためです。 Apache 1.3のmod_rewriteのマニュアルによると -------------------------------------------------------------------- 'noescape|NE' (no URI escaping of output) このフラグは、mod_rewrite が書き換え結果に対して通常行なわれる URL エスケープルールを適用しないようにします。 通常は ('%', '$', ';' といった) 特殊文字については、それらと等価の 16 進数文字列 (順に '%25', '%24', '%3B') にエスケープされます。 このフラグはこの動作を抑制します。 これにより、出力の中に パーセント文字を使うことができます。 以下に例を挙げます。 RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE] この例では、'/foo/zed' が安全なリクエストである '/bar?arg=P1=zed' に変更されます。 注意: noescape フラグは Apache 1.3.20 以降でのみ有効です。 -------------------------------------------------------------------- というのがあったので、[フラグ]にNEを追加すればURLエスケープを行わなくなります。 ということで、Pukiwikiをサイトごと転送させるには、下記の例のようにすれば良いです。 * wikiディレクトリに作成した .htaccessの例 ----------------------------------------------------------- RewriteEngine on RewriteRule ^(.*)$ http://example.net/wiki/$1 [R=301,NE,L] ----------------------------------------------------------- * アクセス先URL -------------------------------------------------------------------------- http://example.net/wiki/index.php?Java%A5%E1%A5%E2 -------------------------------------------------------------------------- これで、問題なく転送できるようになりました。 参考URL Apache 2.0 mod_rewrite http://httpd.apache.org/docs/2.0/ja/mod/mod_rewrite.html#rewritecond Apache 1.3 mod_rewrite http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html bayashi.net - mod_rewrite URLを書き換えるApacheモジュール http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html ITPro - 設定を上書きする「.htaccess」 http://www.itproexpo.jp/article/COLUMN/20080512/301299/
MS Officeを使いながらも、OpenOffice.orgを必要な部門に柔軟に広げていく、という手法はとても良いですね。大手企業ともなると、なかなか柔軟に動けなくなることが多いですし。将来的なODFフォーマットへの対応や、ライセンスコストの問題としても、先を見据えた戦略をとっている住友電工は高く評価できますね。また、住友電工ほどの大手企業がプレスリリースを打つというのは、OpenOffice.Orgのコミュニティにとっても少なからずメリットになるでしょう。事例がないと導入に躊躇する国内企業にとっても、いい刺激となるのでは。
ITPro - 「コスト削減が狙いではない」、住友電工OpenOffice導入の真相 http://itpro.nikkeibp.co.jp/article/NEWS/20080523/303912/