完了一晚上的的apache的rewrite功能了 终于弄好了

我的apache是用.gz格式的文件安装的。不是用的ubuntu的那个安装程序的方法。而且是默认安装的。结果现在一客户要用rewrite的功能。要测试要加这个功能,累死了终于装上了。
参考如下文章。我记在桌面上了忘记地址了,
-------------------------------
以前用默认配置编译并安装了apache2,很多模块都没编入,现在需要使用rewrite的功能。在网上查了一些资料,但实际操作时有些出入,经过一些改正和摸索,终于可以顺利使用了: http://www.21t.org.cn
环境:
RedHat Linux AS4
Apache2.2.3,使用默认安装目录:/usr/local/apache2

步骤:
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
但偶编译完却没发现 🙁 ,只好手工编译一下:////iceweb注:好像必须执行下面这步才可以,我搜搜到其他的帖子有说
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功能不启用。但我试了是可以的。
------------------------------
折腾完这个还没OK,还去httpd.conf去掉前面的# 然后还要修改
AllowOverride None
改成
AllowOverride Options FileInfo
这里看来的。
http://www.afen.cn/blog/?p=76

发表评论

电子邮件地址不会被公开。 必填项已用*标注