`
learnworld
  • 浏览: 168232 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

apache rewrite模块安装和使用

 
阅读更多
最近工作需要用到apache rewrite功能,之前本机已经安装apache,但没有安装rewrite模块。下面总结一下rewrite模块的安装过程和相关知识。本机已安装的apache版本为2.2.16,操作系统为ubuntu10.10。

一、 安装过程
1. 在apache源码目录下查找mod_rewrite.c文件。
find . -name mod_rewrite.c

2. 进入mod_rewrite.c文件所在目录。
cd modules/mappers

3. 将C程序编译成共享模块,以便在运行时加载到apache服务器中。
/usr/alibaba/install/httpd-2.2.16/bin/apxs  -c mod_rewrite.c
其中/usr/alibaba/install/httpd-2.2.16为本机的apache安装目录。
console输出如下:
/usr/alibaba/install/httpd-2.2.16/build/libtool --silent --mode=compile gcc -prefer-pic   -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -g -O2 -pthread -I/usr/alibaba/install/httpd-2.2.16/include  -I/usr/alibaba/install/httpd-2.2.16/include   -I/usr/alibaba/install/httpd-2.2.16/include   -c -o mod_rewrite.lo mod_rewrite.c && touch mod_rewrite.slo
/usr/alibaba/install/httpd-2.2.16/build/libtool --silent --mode=link gcc -o mod_rewrite.la  -rpath /usr/alibaba/install/httpd-2.2.16/modules -module -avoid-version    mod_rewrite.lo

4. 安装动态共享对象到服务器的module目录中,并修改httpd.conf文件配置。
/usr/alibaba/install/httpd-2.2.16/bin/apxs -i -a -n rewrite mod_rewrite.la
console输出如下:
/usr/alibaba/install/httpd-2.2.16/build/instdso.sh SH_LIBTOOL='/usr/alibaba/install/httpd-2.2.16/build/libtool' mod_rewrite.la /usr/alibaba/install/httpd-2.2.16/modules
/usr/alibaba/install/httpd-2.2.16/build/libtool --mode=install cp mod_rewrite.la /usr/alibaba/install/httpd-2.2.16/modules/
cp .libs/mod_rewrite.so /usr/alibaba/install/httpd-2.2.16/modules/mod_rewrite.so
cp .libs/mod_rewrite.lai /usr/alibaba/install/httpd-2.2.16/modules/mod_rewrite.la
cp .libs/mod_rewrite.a /usr/alibaba/install/httpd-2.2.16/modules/mod_rewrite.a
chmod 644 /usr/alibaba/install/httpd-2.2.16/modules/mod_rewrite.a
ranlib /usr/alibaba/install/httpd-2.2.16/modules/mod_rewrite.a
PATH="$PATH:/sbin" ldconfig -n /usr/alibaba/install/httpd-2.2.16/modules
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/alibaba/install/httpd-2.2.16/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/alibaba/install/httpd-2.2.16/modules/mod_rewrite.so
[activating module `rewrite' in /usr/alibaba/install/httpd-2.2.16/conf/httpd.conf]

参数含义:
-i  表示需要执行安装操作。
-a  自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
-n  增加或启用的模块名称。

5. 打开apache安装目录下的conf/httpd.conf文件,检查是否有如下行:
LoadModule rewrite_module     modules/mod_rewrite.so
如果包含此行,则安装成功。

6. 重新启动apache。
/usr/alibaba/install/httpd-2.2.16/bin/apachectl stop
/usr/alibaba/install/httpd-2.2.16/bin/apachectl start

二、 安装错误解决方法
1. 现象: Can`t loacte API module staructure `mod_rewrite_module` in file 
/usr/local/apache2/modules/mod_rewrite.so:/usr/local/apache2/lib/libapr-
0.so.0:undefined symbol:mod_rewrite_module
解决方法: httpd.conf里面写的mod_rewrite_module改成rewrite_module。

2. 现象: module rewrite_module is built-in and can't be loaded.
解决方法: 表示模块是内建的,不用再手动调入,注释掉httpd.conf中如下行: 
#LoadModule rewrite_module modules/mod_rewrite.so
检查所有内建模块的命令: apachectl -l

三、 rewrite功能简介
需求: 如果本地包含样式文件,则通过本地apache访问资源;否则从远端服务器获取资源。
实现:
<VirtualHost *:80>
    DocumentRoot "/home/zhouyingbo/sourcecode/style_other/20111031_88209_punish_1"
    ServerName style.china.alibaba.com
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f  #不是本地文件夹
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d  #不是本地文件
    RewriteRule ^(.*)$ http://10.20.136.137$1 [L]   #重写到远端服务器
    </IfModule>

</VirtualHost>
说明:
RewriteEngine  On 表示开启重写引擎功能;
RewriteCond语法格式为: RewriteCond TestString CondPattern,当TestString满足CondPattern时,执行RewriteRule定义的规则。
RewriteRule语法格式为:  RewriteRule Pattern Substitution,Pattern为posix正则式,Substitution用来替换相应的匹配。

四、参考资料
RewriteCond参考文档: http://blog.csdn.net/keyunq/article/details/2536875
RewriteRule参考文档: http://blog.csdn.net/bjbs_270/article/details/2097064
0
0
分享到:
评论

相关推荐

    Apache的Mode Rewrite模块和.htaccess文件配合.docx

    Apache的Mode Rewrite模块和.htaccess文件配合.docx

    apache rewrite_module模块使用教程

    apache rewrite_module模块使用教程

    php检测apache mod_rewrite模块是否安装的方法

    本文实例讲述了php检测apache mod_rewrite模块是否安装的方法。分享给大家供大家参考。具体实现方法如下: /** * @title Check if Apache's mod_rewrite is installed. * * @author Pierre-Henry Soria * @...

    Linux下Apache安装/增加mod_rewrite模块的方法

    如果你的服务器apache还没有安装,那很简单,在编译apache时将mod_rewrite模块编译进去就可以,相关文档可以在http://man.chinaunix.net/newsoft …… ew/mod/mod_rewrite. html中找到。如果你的apache已经安装好了...

    Apache Rewrite实现URL的301跳转和域名跳转

    方法有两种一种是编译apache的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。 基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下...

    apache 开启重定向 rewrite的实现方法

    apache 开启重定向 rewrite的实现方法 1.开启重定向模块 $ ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enable/rewrite.load 2.修改配置文件(某些php框架需要) $ vim /etc/apache2/...

    Apache伪静态Rewrite详解

    方法有两种一种是编译apache的时候就直接 安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。二、在Apache配置中启用Rewrite打开配置文件httpd.conf: 代码如下:1....

    让Apache支持Rewrite静态页面重写的方法

    首先确定您使用的 Apache 版本,及是否加载了 mod_rewrite 模块。 Apache 1.x 的用户请检查 conf/httpd.conf 中是否存在如下两段代码: LoadModule rewrite_module libexec/mod_rewrite.so AddModule mod_rewrite.c ...

    开启Apache mod_rewrite模块示例代码

    主要介绍了如何开启Apache mod_rewrite模块,需要的朋友可以参考下

    使用apache模块rewrite_module (转)

    APACHE的 MOD_rewrite模块. 大家可以看一个演示的一个 PHP学习论坛 [url]http://www.phpx.com/happy/… 这个论坛的版面和帖子,就是运用了这个技术,地址静态化.但是是假的. 这个技术哪里好? 可以让baidu, google...

    iis_rewrite.zip

    1、php中默认均开启了Rewrite模块,通常来说iis服务器也不需要额外的设置; 2、进入记事狗系统后台-&gt;系统设置-&gt;URL地址设置,将Rewrite方式改为 路径模式即可立即生效; 备注:设置成功后,请测试网站是否可以正常...

    如何在Ubuntu下启动Apache的Rewrite功能

    另外,也可以通过将 /etc/apache2/mods-available/rewrite.load 连接到 /etc/apache2/mods-enabled/rewrite.load 来打开 Mod_rewrite 模块。用指令操作就是: sudo ln -s /etc/apache2/mods-available/rewrite.load ...

    apache反向代理

    注意: 在编译Apache的时候,必须编译大多数模块,并将它们设置为DSO模式,同时启动proxy和rewrite模块,同时也将其设置为DSO模式。 #make #make install 将安装所有Apache所需文件到/usr/local/apache目录下。...

    Apache开启伪静态

    详细介绍Apache开启伪静态 Rewrite url重写规则

Global site tag (gtag.js) - Google Analytics