热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Apache服务器中rewrite模块的安装和使用方法

最近工作需要用到apacherewrite功能,之前本机已经安装apache,但没有安装rewrite模块。下面总结一下rewrite模块的安装过程和相关知识。本机已安装的apache版本为2.2.16,操作系统为ubuntu10.10。一、安装过程1.在apache源码目录下查找mod_rewrite.c文件
最近工作需要用到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访问资源;否则从远端服务器获取资源。
实现:

DocumentRoot "/home/zhouyingbo/sourcecode/style_other/20111031_88209_punish_1"
ServerName style.china.alibaba.com

RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f #不是本地文件夹
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d #不是本地文件
RewriteRule ^(.*)$ http://10.20.136.137$1 [L] #重写到远端服务器


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

推荐阅读
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了VMware的多种认证选项,帮助你根据职业需求和个人技能选择最合适的认证路径,涵盖从基础到高级的不同层次认证。 ... [详细]
  • 本文介绍如何通过更改软件源来提前体验Ubuntu 8.10,包括详细的配置步骤和相关注意事项。 ... [详细]
  • 本文介绍如何通过SSH协议使用Xshell远程连接到Ubuntu系统。为了实现这一目标,需要确保Ubuntu系统已安装并配置好SSH服务器,并保证网络连通性。 ... [详细]
  • 本文介绍如何在Linux Mint系统上搭建Rust开发环境,包括安装IntelliJ IDEA、Rust工具链及必要的插件。通过详细步骤,帮助开发者快速上手。 ... [详细]
  • PHP 时间与日期工具类:星座、干支、生肖的实现
    本文介绍了一个PHP时间与日期工具类,涵盖了时区设置、有效日期和时间检查、星座、干支、生肖计算等功能。该工具类特别适用于需要处理中国农历及西方星座的应用场景。 ... [详细]
  • 在Ubuntu 8.04中安装美观的Cairo-Dock桌面增强工具
    本文介绍如何在Ubuntu 8.04系统中安装和配置Cairo-Dock,这款桌面增强工具以其精美的界面和高效的功能备受用户青睐。文章将指导您通过简单的步骤完成安装,并提供一些实用的配置建议。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • 本文详细介绍了如何在预装Ubuntu系统的笔记本电脑上安装Windows 7。针对没有光驱的情况,提供了通过USB安装的具体方法,并解决了分区、驱动器无法识别等问题。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
author-avatar
HK12593
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有