linux下让apache支持mod_rewrite模块

重新编译mod_rewrite.so:

查找源码

在apache的源码安装目录中寻找mod_rewrite.c文件

1
2
$ find ./ -name "mod_rewrite.c"
/usr/local/src/httpd-2.2.4/modules/mappers/mod_rewrite.c

编译:

1
2
3
$ cd /usr/local/src/httpd-2.2.4/modules/mappers/
$ /usr/local/apache/bin/apxs -c mod_rewrite.c
$ /usr/local/apache/bin/apxs -i -a -n mod_rewrite mod_rewrite.la

如果没有什么错误的话,应该在你的apache的modules目录中编译出一个mod_rewrite.so文件。
编辑httpd.conf文件,确认httpd.conf中已经包含mod_rewrite.so的加载语句,如下:

1
LoadModule rewrite_module modules/mod_rewrite.so

重启

完成之后,记得重启服务器apache。

可能碰到的问题

错误一

如果出现这个错误

httpd: Syntax error on line 61 of /usr/local/apache/conf/httpd.conf: Can’t locate API module structure `mod_rewrite_module’ in file /usr/local/apache/modules/mod_rewrite.so: /usr/local/apache/modules/mod_rewrite.so: undefined symbol: mod_rewrite_module

修改http.conf
原来:httpd.conf里面写的mod_rewrite_module
改成:rewrite_module

错误二

如果重启apache出现这个错误

httpd: Syntax error on line 61 of /usr/local/apache/conf/httpd.conf: module rewrite_module is built-in and can’t be loaded

表示模块是内建的,不用再调入,修改http.conf注释掉

1
#LoadModule rewrite_module modules/mod_rewrite.so

修改虚拟机配置

注意下一步,配置虚拟主机的时候要类似如下设置才可以生效:

1
2
3
4
5
6
7
8
9
10
11
<VirtualHost *:80>
ServerName www.liudongkai.com
DocumentRoot /home/www.liudongkai.com
ErrorLog logs/www.liudongkai.com-error_log
CustomLog logs/www.liudongkai.com combined
<Directory /home/www.liudongkai.com>
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>

如果AllowOverride设置为none的话,apache会不读取网站的.htaccess文件!