Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2764734
  • 博文数量: 587
  • 博客积分: 6356
  • 博客等级: 准将
  • 技术积分: 6410
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-23 10:54
个人简介

器量大者,福泽必厚

文章分类

全部博文(587)

文章存档

2019年(3)

2018年(1)

2017年(29)

2016年(39)

2015年(66)

2014年(117)

2013年(136)

2012年(58)

2011年(34)

2010年(50)

2009年(38)

2008年(16)

分类: LINUX

2012-03-20 18:03:54

linux下让apache支持mod_rewrite模块

如果你的服务器apache还没有安装,那很简单,在编译apache时将 mod_rewrite模块编译进去就可以,相关文档可以在 … ew/mod/mod_rewrite. html中找到。如果你的apache已经安装好了,现在只想编译出mod_rewrite.so模块,在apache中进行加载,下面我们就介绍这个方 法。

以Fedora操作系统进行举例:

1)首次安装apache,在编译时增加–enable-rewrite选项。

如./configure –prefix=/opt/apache --enable-so  --enable-mods-shared=all --enable-rewrite --enable-cache

2)增加mod_rewrite模块

# cd  /root/httpd-2.2.8

# find .  -name mod_rewrite.c //在apache的源码安装目录中寻找mod_rewrite.c文件

(2.2.8在目录httpd-2.2.8/modules/mappers下,我找了半天才找到的)

# cd PATH/to/mod_rewrite.c     //进入包含mod_rewrite.c文件的目录

# /opt/apache/bin/apxs -c mod_rewrite.c //apxs应指定绝对路径,在你当前正在使用apache的bin目录里

# /opt/apache/bin/apxs -i -a -n mod_rewrite mod_rewrite.la

如果没有什么错误的话,应该在你的apache的modules目录中编译出一个mod_rewrite.so文件。

编辑httpd.conf文件,确认httpd.conf中已经包含mod_rewrite.so的加载语句,如下:

LoadModule rewrite_module modules/mod_rewrite.so

检查:

[root@www httpd-2.2.8]# ../bin/apachectl configtest
Syntax OK

这时,你的apache应该已经支持rewrite了。

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

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


点击(此处)折叠或打开

  1. DocumentRoot /var/www/www/
  2. ServerName
  3. Options FollowSymLinks
  4. AllowOverride All ##尤其重要!如果AllowOverride设置为none的话,apache会不读取网站的.htaccess文件!
  5. order allow,deny
  6. Allow from all

另外一个例子:

[root@tuiguangvm conf]# /usr/local/apache/bin/apachectl  -l | grep write
  mod_rewrite.c 

我的apache配置文件如下: ##from ce
        Options FollowSymLinks
        Order allow,deny
        Allow from all
        AllowOverride All ##必须要添加使之支持url rewrite
 

在安装shopex测试时遇到了问题!
设置伪静态失败无法自动生成.htaccess,可能是权限问题,启用伪静态失败


原因:apache启动是用nobody和nobody组启动的! 故程序生成的文件所有者是nobody:nobody组
     但web目录只有本用户可以写入(例如;abc),故写入失败


设置伪静态失败您的系统不支持apache的.htaccess,启用伪静态失败.!

原因:apache中没有设置支持伪静态
解决方法:

在相关目录中加入: AllowOverride All 即可正常!

测试:
[root@tuiguangvm tmp]# /usr/local/apache/bin/htpasswd   -c /tmp/.htpasswd liu
New password: 
Re-type new password: 
Adding password for user liu
[root@tuiguangvm tmp]# pwd
/tmp
[root@tuiguangvm tmp]# cat .htpasswd 
liu:AdC7oLVEI.oyo
[root@tuiguangvm tmp]# 
 
[root@tuiguangvm images]# pwd
/web/abc.ungeo.com/web/images
[root@tuiguangvm images]# cat .htaccess 
AuthType Basic
AuthName "test"
AuthUserFile /tmp/.htpasswd
require user liu
require valid-user
[root@tuiguangvm images]# cat  index.html 
test

用网页测试如下:
可以测试如果将 AllowOverride All 在httpd.conf中注释掉,则不会弹出对话框提示输入用户名和密码!

阅读(1230) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~