apacheに組み込まれているモジュールを確認する場合は
# httpd -lで確認できます。今日は「やべっ!RewriteEngine使うためのmod_rewrite入ってねーじゃん!」という場合どうするかのメモです。
Compiled in modules:
core.c
mod_authn_file.c
mod_authn_default.c
mod_authz_host.c
mod_authz_groupfile
...
まぁ、簡単なのはapacheを --enable-rewrite 追加して再インストールで良いのですが、再インストールできないような場合(例えばapacheを止められないような場合)。
まず適当なDirを作成
# mkdir /usr/local/apache2/my_dirし、rewrite用のプログラムファイルを持ってきます。
# find /usr/local/src/httpd-2.2.6/ -name "*rewrite*"たくさん出てきます。
/usr/local/src/httpd-2.2.6/modules/mappers/mod_rewrite.lo
/usr/local/src/httpd-2.2.6/modules/mappers/libmod_rewrite.la
/usr/local/src/httpd-2.2.6/modules/mappers/mod_rewrite.exp
/usr/local/src/httpd-2.2.6/modules/mappers/.libs/libmod_rewrite.a
/usr/local/src/httpd-2.2.6/modules/mappers/.libs/libmod_rewrite.la
/usr/local/src/httpd-2.2.6/modules/mappers/.libs/mod_rewrite.o
/usr/local/src/httpd-2.2.6/modules/mappers/mod_rewrite.o
/usr/local/src/httpd-2.2.6/modules/mappers/mod_rewrite.c
/usr/local/src/httpd-2.2.6/modules/mappers/NWGNUrewrite
...
ココで必要なのは
「mod_rewrite_c」と「mod_rewirte.h」の2つです。(たぶん
# cp /usr/local/src/httpd-2.2.6/modules/mappers/mod_rewrite.c /usr/local/apache2/my_dirします。
# cp /usr/local/src/httpd-2.2.6/modules/mappers/mod_rewrite.h /usr/local/apache2/my_dir
次にビルドします。
# cd /usr/local/apache2/my_dirとすると
# /usr/local/apache2/bin/apxs -c mod_rewrite.c
# ls -laとたくさんファイルが出来上がります。
drwxr-xr-x 2 root root 4096 Jul 15 18:54 .libs
-rw-r--r-- 1 root root 154702 Jul 15 18:53 mod_rewrite.c
-rw-r--r-- 1 root root 1340 Jul 15 18:53 mod_rewrite.h
-rw-r--r-- 1 root root 822 Jul 15 18:54 mod_rewrite.la
-rw-r--r-- 1 root root 324 Jul 15 18:54 mod_rewrite.lo
-rw-r--r-- 1 root root 197344 Jul 15 18:54 mod_rewrite.o
-rw-r--r-- 1 root root 0 Jul 15 18:54 mod_rewrite.slo
次にインストールです。
# /usr/local/apache2/bin/apxs -i -a -n rewrite mod_rewrite.la完了です。
あとはhttpd.confをいつものように編集すれば完了です。
以上でぇぇぇえぇす。