zhk2369 发表于 2018-11-24 09:42:04

单独编译apache的rewrite模块--收藏

  单独编译apache的rewrite模块
  装好了一个基于Modx的网站
  在IE里面访问时,出来的页面是apache内部错误,请联系管理员
  查看apache的错误日志里面内容如下
   var/www/xxx/.htaccess: Invalid command 'RewriteEngine', perhaps mis-spelled or defined by a module not included in the server configuration
  根据.htaccess的内容,需要apache支持rewrite模块
  我先把.htaccess文件重命名(即不启用rewrite模块),发现是可以访问页面的,所以是我的apache编译时没有rewrite模块引起的问题
  现在单独编译这个模块
  进入apache的源码目录
  # cd httpd-2.0.59
  # cd modules
  #cd mappers/
  # ls
  会列出很多文件,其中mod_rewrite.c这个就是rewrite模块的源码文件
  # /usr/local/apache2/bin/apxs -i -a -c ./mod_rewrite.c
  输出如下
  /usr/local/apache2/build/libtool --silent --mode=compile gcc -prefer-pic-DAP_HAVE_DESIGNATED_INITIALIZER -DLINUX=2 -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
  /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=install cp ./mod_rewrite.la /usr/local/apache2/modules/
  cp ./.libs/mod_rewrite.so /usr/local/apache2/modules/mod_rewrite.so
  cp ./.libs/mod_rewrite.lai /usr/local/apache2/modules/mod_rewrite.la
  cp ./.libs/mod_rewrite.a /usr/local/apache2/modules/mod_rewrite.a
  ranlib /usr/local/apache2/modules/mod_rewrite.a
  chmod 644 /usr/local/apache2/modules/mod_rewrite.a
  PATH="$PATH:/sbin" ldconfig -n /usr/local/apache2/modules
  ----------------------------------------------------------------------
  Libraries have been installed in:
  /usr/local/apache2/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/local/apache2/modules/mod_rewrite.so
  
  由输出可以看到rewrite模块已经在httpd.conf中激活了,查看确认
  # vi /usr/local/apache2/conf/httpd.conf
  可以看到
  # LoadModule foo_module modules/mod_foo.so
  LoadModule php5_module      modules/libphp5.so
  LoadModule rewrite_module   modules/mod_rewrite.so
  重启apache生效
  把.htaccess文件恢复为这个文件名,访问正常显示页面

页: [1]
查看完整版本: 单独编译apache的rewrite模块--收藏