Download List

Project Description

主に Apache の WebDAV 拡張に関する各種ソフトウェア、パッチ、ドキュメントの公開と継続的なメンテナンスを行います。cadaver や davfs 等、Apache Software License 以外のライセンスを持つものが含まれる事に注意して下さい。

System Requirements

System requirement is not defined

Released at 2005-08-28 17:47
mod_rewrite_charset 20050828-2.0.54 (1 files Hide)

Release Notes

mod_rewrite で mod_encoding のようにリクエスト URI の文字コード変換が
出来ないかと色々弄ってみたところ、結構いい感じに出来上がりました。まだ
少し研ききれていない部分があるかも知れません。皆さんにお試し頂いてレポー
ト頂ければ幸いです。

なお、mod_rewrite における文字コード変換は、mod_encoding の作者でもあ
ります IIJ 山田さんのアイデアを元にしています。mod_rewrite 自体は若干
難解なモジュールですが、実装を終えてみるとこのアイデアは的を射ていたと
思います。アイデアを拝借させて頂いた事について、この場をお借りして山田
さんに感謝申し上げます。

---

●インストール方法
httpd-2.0.54 に添付のパッチを当ててコンパイル&インストールして下さい。
但し、このパッチは下記の前提があります。前提から外れる場合は、適当に
hackして下さい。

・OS に実用的な iconv() がある事
・リンク時に -liconv が不要な環境

●設定方法
mod_rewrite のディレクティブを若干拡張してあります。

・RewriteCharset ディレクティブ新設
変換先文字コードを指定するディレクティブです。サーバ単位/ディレクト
リ単位の両方で使用できる筈です(ディレクトリ単位でしか試していません (^^;。

例:RewriteCharset UTF-8

・RewriteRule ディレクティブの拡張
変換元の文字コードを指定する為のフラグ charset (CH) を追加しました。
文字コードは":"で区切りながら複数指定する事が出来、前の方から順に変
換元として(RewriteCharset で指定した変換先文字コードへの)変換を変
換を試みます。

例:RewriteRule ^(.+[^/])$ $1 [L,CH=EUCJP-OPEN:UTF-8]

手を入れたのはこれだけです。後は、「黒魔術」と言われる mod_rewrite
の小技を駆使すれば、従来のmod_encoding と同様、アクセスしたブラウザ
のタイプに応じて任意の文字コード変換が指定出来る筈です。例えば、
mod_encoding の下記設定を考えてみると、
---
EncodingEngine on
SetServerEncoding UTF-8
DefaultClientEncoding UTF-8 CP932 EUC-JP

AddClientEncoding "Microsoft .* DAV 1.1" ASCII CP932 UTF-8
AddClientEncoding "Microsoft .* DAV" UTF-8 CP932
AddClientEncoding "(Microsoft .* DAV $)" UTF-8 CP932
AddClientEncoding "(Microsoft .* DAV 1.1)" CP932 UTF-8
AddClientEncoding "Microsoft-WebDAV*" UTF-8 CP932
AddClientEncoding "RMA/*" CP932
AddClientEncoding "xdwin9x/" CP932
AddClientEncoding "cadaver/" EUC-JP
AddClientEncoding "Mozilla/" EUC-JP
---
本パッチではこうなるかと思います(手元に大したクライアント環境がない
のでここまで複雑なのは試していませんが)。
---
RewriteEngine on
RewriteCharset UTF-8
RewriteCond %{HTTP_USER_AGENT} ".*Microsoft .* DAV 1.1.*" [OR]
RewriteCond %{HTTP_USER_AGENT} ".*(Microsoft .* DAV 1.1).*"
RewriteRule ^(.+[^/])$ $1 [L,CH=ASCII:CP932:UTF-8]

RewriteCond %{HTTP_USER_AGENT} ".*Microsoft .* DAV.*" [OR]
RewriteCond %{HTTP_USER_AGENT} ".*(Microsoft .* DAV $).*" [OR]
RewriteCond %{HTTP_USER_AGENT} ".*Microsoft-WebDAV.*"
RewriteRule ^(.+[^/])$ $1 [L,CH=UTF-8:CP932]

RewriteCond %{HTTP_USER_AGENT} ".*RMA/*.*" [OR]
RewriteCond %{HTTP_USER_AGENT} ".*xdwin9x/.*"
RewriteRule ^(.+[^/])$ $1 [L,CH=CP932]

RewriteCond %{HTTP_USER_AGENT} ".*cadaver/.*" [OR]
RewriteCond %{HTTP_USER_AGENT} ".*Mozilla/.*"
RewriteRule ^(.+[^/])$ $1 [L,CH=EUC-JP]
---
実際に試した設定(の該当部分)を下記に挙げておきます。
---
RewriteLog "/usr/local/apache2/logs/rewrite.log"
#RewriteLogLevel 9

<Directory "/usr/local/apache2/htdocs/utf-8">
RewriteEngine on
RewriteBase /utf-8/
RewriteCharset UTF-8
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*
RewriteRule ^(.+[^/])$ $1 [L,CH=UTF-8:SHIFT-JIS:EUCJP-OPEN]
</Directory>
<Directory "/usr/local/apache2/htdocs/shift-jis">
RewriteEngine on
RewriteBase /shift-jis/
RewriteCharset SHIFT-JIS
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*
RewriteRule ^(.+[^/])$ $1 [L,CH=EUC-JP:EUCJP-OPEN:UTF-8]
</Directory>

Changelog

本パッケージ最初のリリースです。