设为首页 收藏本站
查看: 788|回复: 0

[经验分享] apache安装rewrite模块

[复制链接]

尚未签到

发表于 2018-11-18 12:04:29 | 显示全部楼层 |阅读模式
  最近工作需要用到apache rewrite功能,之前本机已经安装apache,但没有安装rewrite模块。下面总结一下rewrite模块的安装过程和相关知识。本机已安装的apache版本为2.2.32,操作系统为centos6.5.
  一、 安装过程
  1. 在apache源码目录下查找mod_rewrite.c文件。
  find . -name mod_rewrite.c
  2. 进入mod_rewrite.c文件所在目录。
  cd modules/mappers
  3. 将C程序编译成共享模块,以便在运行时加载到apache服务器中。
  /usr/local/apache2/bin/apxs  -cmod_rewrite.c
  其中/usr/local/apache2为本机的apache安装目录。
  console输出如下:
  /usr/local/apache2/build/libtool --silent--mode=compile gcc -prefer-pic   -DLINUX-D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache2/include  -I/usr/local/apache2/include   -I/usr/local/apache2/include   -c -o mod_rewrite.lo mod_rewrite.c&& touch mod_rewrite.slo
  /usr/local/apache2/build/libtool --silent--mode=link gcc -o mod_rewrite.la  -rpath/usr/local/apache2/modules -module -avoid-version    mod_rewrite.lo
  4. 安装动态共享对象到服务器的module目录中,并修改httpd.conf文件配置。
  /usr/local/apache2/bin/apxs -i -a -n rewritemod_rewrite.la
  console输出如下:
  /usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool'mod_rewrite.la /usr/local/apache2/modules
  /usr/local/apache2/build/libtool --mode=installcp mod_rewrite.la /usr/local/apache2/modules/
  libtool: install: cp .libs/mod_rewrite.so/usr/local/apache2/modules/mod_rewrite.so
  libtool: install: cp .libs/mod_rewrite.lai/usr/local/apache2/modules/mod_rewrite.la
  libtool: install: cp .libs/mod_rewrite.a/usr/local/apache2/modules/mod_rewrite.a
  libtool: install: chmod 644/usr/local/apache2/modules/mod_rewrite.a
  libtool: install: ranlib/usr/local/apache2/modules/mod_rewrite.a
  libtool: finish:PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/sbin"ldconfig -n /usr/local/apache2/modules
  ----------------------------------------------------------------------
  Libraries have been installed in:
  /usr/local/apache2/modules
  If you ever happen to want to link againstinstalled libraries
  in a given directory, LIBDIR, you must eitheruse libtool, and
  specify the full pathname of the library, or usethe '-LLIBDIR'
  flag during linking and do at least one of thefollowing:
  - addLIBDIR to the 'LD_LIBRARY_PATH' environment variable
  during execution
  - addLIBDIR to the 'LD_RUN_PATH' environment variable
  during linking
  - usethe '-Wl,-rpath -Wl,LIBDIR' linker flag
  - haveyour system administrator add LIBDIR to '/etc/ld.so.conf'
  See any operating system documentation aboutshared libraries for
  more information, such as the ld(1) and ld.so(8)manual pages.
  ----------------------------------------------------------------------
  chmod 755/usr/local/apache2/modules/mod_rewrite.so
  [activating module `rewrite' in/usr/local/apache2/conf/httpd.conf]
  参数含义:
  -i  表示需要执行安装操作。
  -a  自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
  -n  增加或启用的模块名称。
  5. 打开apache安装目录下的conf/httpd.conf文件,检查是否有如下行:
  LoadModule rewrite_module    modules/mod_rewrite.so
  如果包含此行,则安装成功。
  6. 重新启动apache。
  /usr/local/apache2/bin/apachectl stop
  /usr/local/apache2/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 beloaded.
  解决方法: 表示模块是内建的,不用再手动调入,注释掉httpd.conf中如下行:
  #LoadModule rewrite_modulemodules/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用来替换相应的匹配。
  四、参考资料
  RewriteCond参考文档:http://blog.csdn.net/keyunq/article/details/2536875
  RewriteRule参考文档:http://blog.csdn.net/bjbs_270/article/details/2097064


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-636566-1-1.html 上篇帖子: Linux之安装apache2.4.23 下篇帖子: Linux之apache优化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表