スマートデバイスアプリ開発のあれやこれや

Apacheのmod_rewriteモジュール

Apachemod_rewriteモジュールを使うことで
URLとそれに紐付くコンテンツの対応関係を書き換えることができます。

分かりやすくいうと、http://sample/test.htmlというページがあった場合に
mod_rewriteを使うと架空のURL http://sample/hoge で同じtest.htmlを表示する
なんてことが可能になるわけです。

消して〜♪ リライトして〜♪

1 mod_rewriteをロードする

Apachehttpd.confファイルを開きます。

LoadModule alias_module libexec/apache2/mod_alias.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
#LoadModule php5_module libexec/apache2/libphp5.so


mod_rewrite.soの先頭に付いている#を外します。

2 リライト対象のDirectory設定を変更する

リライトしたい要素をhttpd.confから探します。
今回はApache直下のDocumentsディレクトリ以下を対象にします。

<Directory "/Library/WebServer/Documents">
  <!-- この部分にリライトの設定を入れる -->
</Directory>


上記のコメント部分に以下の内容を追記します。

<Directory "/Library/WebServer/Documents">
  <!-- この部分にリライトの設定を入れる -->
  RewriteEngine On
  RewriteRule ^rewrite sample.html
</Directory>


”RewriteEngine On”は言わずもがな、リライトします!という宣言です。
"RewriteRule"の部分は「書き換え対象」と「書き換え先」を設定します。
上の例でいうとrewriteというURLが呼ばれたら内部的にはsample.htmlを呼ぶ...という意味です。

ここでは決め打ちで書いていますが、正規表現でも書けます。
(というか正規表現で書くことの方が多いと思います)

3. 忘れずApacheを再起動する

Apacheを再起動しましょー。

sudo apachectl restart

4. 実験する

http://localhost/rewriteをブラウザから呼んでみましょう。
sample.htmlのデータが表示されましたか?