Thursday 20 September 2012

Apache mod_rewrite 文法

Apacheの設置で、www有りと無しのURIが同一のドキュメントを参照するためにmod_rewriteの設定をしていました。Google で検索すればこの類いのhowtoはいくらでも出て来るのですが、例えば下のようなコードを見てもむしろ[NC]って何?%1って何?などなど疑問は増すばかり。Apacheのドキュメントにあたってみました。


RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]


"PCRE regular-expression"という言葉が出てきて調べたところこれは"Perl Compatible Regular Expressions"のことでした。ただ文章の書き方が妙に厳密なので嫌な予感がしたのですが、やはり形式言語の類いの話がでてきました。この辺りのフィールドは定義が大切なので、一つの単語の定義を調べるのにリンクを辿り、更にそのリンクの中に分からない使い方の言葉がいくつか出てきてそれぞれリンクを辿って調べていくというとても面倒なリーディングになってしまいました。ただ形式言語とかメタ言語とか、それぞれ面白そうなので始めてしまったらはまりそうだなと思います。プログラムを書いたりサーバの構築・運用をする際にこのようなエンジニアリングとサイエンスの狭間で仕事をするのは個人的にとても面白く感じます。

ここで例えば [NC] はcase insensitiveのフラッグだとか[L]はここでrewriteの書き換えをストップするとか、[R]は強制的に外部リダイレクトさせるとか書いた方がこのブログの読者(がいれば)には役に立つかもしれないのですが、個人的にはそれぞれがApache本家のサイトに当たって楽しんでほしいです。専門知識に乏しい私は最初の30分は1行読み進むごとにいやになって、その後の2時間ぐらいは楽しめました。

No comments:

Post a Comment