1、Apache安装rewrite模块的时候需要DBM支持,否则无法编译。使用rpm -qa gdbm 查询,如果没有,需要先下载并安装gdbm:
下载地址:ftp://ftp.gnu.org/gnu/gdbm/
安装步骤:
./configure
make
make install
make install-compat (如果不执行此步,无法编译出ndbm.h头文件)
2.更改当前目录到apache源码目录中(俺的是:/home/software/httpd-2.2.3/modules/mappers/),如果不知道mod_rewrite.c在哪个目录,可以使用以下命令查找:
find Your_Apache2_Source_Directiry -name "mod-rewrite.c"
编译rewrite模块:
网上说使用如下命令就可以直接编译得到so文件:
/usr/local/apache2/bin/apxs -c mod-rewrite.c -lgdbm
但偶编译完却没发现 :-( ,只好手工编译一下:
gcc -shared -o mod_rewrite.so mod_rewrite.o -lgdbm
终于得到so文件啦 ^_^
网上有这样一段话:"-lgdbm"是为在编译mod-rewrite.c时要把gdbm连接近来,这样当stop apache再启动时就不会报"dbm fetch"错误.我照做了所以没有什么错误提示,不知道不照做会怎样,等以后有时间了再试一下吧。
3.安装rewrite模块:
/usr/local/apache2/bin/apxs -i -A -n rewrite mod_rewrite.so
该命令把mod_rewrite.so模块安装到apache2的相应目录中(modules),然后在httpd.conf中加入LoadModule指令行。命令中的rewrite参数是告诉apxs命令mod_rewrite.so文件中的模块名。在命令执行后,apxs会在LoadModule中为rewrite加上"_module"以标名模块名称。如果你在启动apache时发现总是给出“不能定位API”之类的错误,那就是说明LoadModule后面的模块名的语法要根据您的apache版本加以改变。
4、停止apache
apache/bin/apachectl stop
5、运行配置文件检查命令
apache/bin/apachectl configtest
如显示Syntax OK,则表示整个操作成功。那么可以到第6步。否则根据提示信息进行调试。但只要按照上面所述操作应该是不会出错的。
6、启动apache
apache/bin/apachectl start
网上说不能使用/usr/local/apache2/bin/apachectl restart来启动apache,否则rewrite功能不启用。但我试了是可以的。
7、检测Apache运行模块
apache/bin/httpd -l
运行模块列表如下:
Compiled in modules:
core.c
mod_access.c
mod_auth.c
mod_include.c
mod_log_config.c
mod_env.c
mod_setenvif.c
mod_proxy.c
proxy_connect.c
proxy_ftp.c
proxy_http.c
prefork.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_cgi.c
mod_negotiation.c
mod_dir.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_rewrite.c
mod_so.c .
TAG: apache REwrite模块