somemo's diary

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

apache モジュールの追加(mod_rewrite)

URL書き換え機能を持つモジュール「mod_rewrite」を動的に追加します。 URL書き換えとは? クライアントからリクエストされたURLを書き換えること。 モジュールの追加方法 動的とは? モジュールの追加方法は、以下の2種類があります。  静的:ソースからのインストール時に、configureのオプションとして追加する方法  動的:DSO(動的共有オブジェクト)、     apxs(Apache拡張ツール)を用いてモジュールソースをインストールする方法。     インストール後、httpd.confファイル中でLoadModuleディレクティブを使う。    [それぞれの特徴]  静的:追加時に組み込まれる。コンパイルするたびに、モジュールを全て記載する必要がある。  動的:apacheの起動時に組み込まれる。再びコンパイルせずに自由に追加できる。 動的にモジュールを追加するためには必要なDSOが存在するかを確認する。  [静的モジュールの一覧表示]  httpd -l  [静的・動的モジュールの一覧表示]  httpd -M  ※apache2.2系、静的・・・static、動的・・・shared  mod_so.c(httpd -l)またはso_module(httpd -M static)が表示されていれば、DSOが存在しています。 apxs(Apache拡張ツール)を用いてモジュールソースをインストールする。  まず、mod_rewriteのソースの場所を確認します。  検索ルートは、/usr/local/src/httpd-2.2.17/modules/mappersにあるらしい。  find /usr/local/src/httpd-2.2.17/modules/mappers -name "mod_rewrite*"  [検索結果]  /usr/local/src/httpd-2.2.17/modules/mappers/mod_rewrite.h  /usr/local/src/httpd-2.2.17/modules/mappers/mod_rewrite.dsp  /usr/local/src/httpd-2.2.17/modules/mappers/mod_rewrite.exp  /usr/local/src/httpd-2.2.17/modules/mappers/mod_rewrite.c  上記のmappersディレクトリに移動し、下記コマンドを実行する。  /usr/local/apache2/bin/apxs -c mod_rewrite.c  /usr/local/apache2/bin/apxs -i -a -n rewrite mod_rewrite.la  [オプション]  c: コンパイル、引数:モジュールソース  i: インストール  a: httpd.confにLoadModuleディレクティブを追加する、LoadModule名  n: ファイル指定、モジュールソース名.la(詳細不明)  [インストールにより追加・更新されたファイル]  1./usr/local/src/httpd-2.2.17/modules/mappers/  mod_rewrite.lo  mod_rewrite.o  mod_rewrite.slo  .libs/mod_rewrite.a  .libs/mod_rewrite.so  .libs/mod_rewrite.lai  .libs/mod_rewrite.o  .libs/mod_rewrite.la  2./usr/local/apache2/modules/  mod_rewrite.c  mod_rewrite.so(アクセス権:755のバイナリファイル)  3./usr/local/apache2/conf/http.conf  LoadModule rewrite_module modules/mod_rewrite.so  ※aオプションによるLoadModuleディレクティブ追加)  4./usr/local/apache2/conf/  /usr/local/apache2/conf/http.conf.bak(元のhttpd.confがリネームされたもの) インストール後の確認する  [モジュールのインストールチェック]  httpd -M   rewrite_module (shared)が追加されていればOK  [httpd.confのSyntaxチェック]  httpd -t  ※Syntax OKが表示されていれば問題なし  [apache再起動後にアクセス]  /usr/local/apache2/bin/apachectl restart 実際にhttpd.confを修正し、URL書き換えを行ってみる  RewriteEngine On   URL書き換えを可能にする  RewriteRule ^(.*)$ http://yahoo.co.jp   すべてのアクセスを、yahooに飛ばす  RewriteRule ^(.*)$ [F]   すべてのアクセスを、アクセス禁止とする  RewriteRule /index.html /sample.html   index.htmlへのアクセスをsample.htmlへのアクセスに置き換える  RewriteRule /index.html /sample.html [R]   index.htmlへのアクセスをsample.htmlへのアクセスに置き換えると同時にURLを書き換える 無事に、終了。 DSO/apxsに関するドキュメント:  http://httpd.apache.org/docs/2.2/dso.html URL書き換えについてまとめてある参考サイト:  http://japache.infoscience.co.jp/rewriteguide/  http://tech.bayashi.jp/archives/entry/techweb/2007/001981.html  http://net-newbie.com/trans/mod_rewrite.html   以上。