2010年7月15日木曜日

apacheにmod_rewriteを追加する。

どうも、俺@連続投稿です。

apacheに組み込まれているモジュールを確認する場合は
# httpd -l
Compiled in modules:
core.c
mod_authn_file.c
mod_authn_default.c
mod_authz_host.c
mod_authz_groupfile
...
で確認できます。今日は「やべっ!RewriteEngine使うためのmod_rewrite入ってねーじゃん!」という場合どうするかのメモです。

まぁ、簡単なのは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をいつものように編集すれば完了です。


以上でぇぇぇえぇす。

0 件のコメント: