xiaui520 发表于 2018-11-23 11:29:58

Apache rewrite模块安装及discuz伪静态配置

  安装好discuz后,在discuz管理界面设置了伪静态,并在apache的配置文件中添加了规则。但是始终不好用,刚才终于恍然大悟,没有rewrite模块啊!
  工作中要用到伪静态功能,所以说rewrite模块是必不可少的,但在本机上已经安装了apache,没有安装rewrite模块,下面简单记录一下鄙人安装rewrite模块的步骤:
  环境:
# cat /etc/redhat-release
CentOS release 6.4 (Final)
# uname -r
2.6.32-358.el6.x86_64
# uname -m
x86_64
#
# apachectl -v
Server version: Apache/2.4.6 (Unix)
Server built:   Oct 21 2013 11:52:02  下面开始rewrite模块的安装:

  1)apache源码包中找到mod_rewrite.c文件,在源码包的module/mappers下,进入所在目录
# cd /software/lamp/httpd-2.4.6/modules/mappers/  2) 将mod_rewrite.c程序编译成共享模块,以便在运行时加载到apache服务器中。/application/apache/为本机apache安装目录
# /application/apache/bin/apxs -c mod_rewrite.c
/application/apr/build-1/libtool --silent --mode=compile gcc -std=gnu99 -prefer-pic   -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/application/apache2.4.6/include-I/application/apr/include/apr-1   -I/application/apr-util/include/apr-1   -c -o mod_rewrite.lo mod_rewrite.c && touch mod_rewrite.slo
/application/apr/build-1/libtool --silent --mode=link gcc -std=gnu99    -o mod_rewrite.la-rpath /application/apache2.4.6/modules -module -avoid-version    mod_rewrite.lo
#  3)安装动态共享对象到服务器module目录中,修改httpd.conf配置文件
  
# /application/apache/bin/apxs -i -a -n rewrite mod_rewrite.la
/application/apache2.4.6/build/instdso.sh SH_LIBTOOL='/application/apr/build-1/libtool' mod_rewrite.la /application/apache2.4.6/modules
/application/apr/build-1/libtool --mode=install install mod_rewrite.la /application/apache2.4.6/modules/
libtool: install: install .libs/mod_rewrite.so /application/apache2.4.6/modules/mod_rewrite.so
libtool: install: install .libs/mod_rewrite.lai /application/apache2.4.6/modules/mod_rewrite.la
libtool: install: install .libs/mod_rewrite.a /application/apache2.4.6/modules/mod_rewrite.a
libtool: install: chmod 644 /application/apache2.4.6/modules/mod_rewrite.a
libtool: install: ranlib /application/apache2.4.6/modules/mod_rewrite.a
libtool: finish: PATH="/application/mysql/bin/:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/sbin" ldconfig -n /application/apache2.4.6/modules
----------------------------------------------------------------------
Libraries have been installed in:
/application/apache2.4.6/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 /application/apache2.4.6/modules/mod_rewrite.so
  参数含义:
-i 表示需要执行安装操作。
-a 自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
-n 增加或启用的模块名称。
  4)查看是否安装成功,httpd.conf中有LoadModule rewrite_module modules/mod_rewrite.so行,即表示安装成功。
# grep rewrite_module /application/apache/conf/httpd.conf
LoadModule rewrite_module   modules/mod_rewrite.so
#  5)重新生效apache所有配置
# apachectl graceful  discuz伪静态配置
  1)登录discuz管理中心,全局-SEO优化-URL静态化,将下面需要静态化的再后面打勾。点击rewrite规则,复制对应的规则到服务器。
  2)将复制好的规则,粘贴到httpd.conf
  
  

Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
###复制伪静态规则的内容,放在下面即可
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^article-(+)-(+)\.html$ portal.php?mod=view&aid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^forum-(\w+)-(+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^thread-(+)-(+)-(+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^group-(+)-(+)\.html$ forum.php?mod=group&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^blog-(+)-(+)\.html$ home.php?mod=space&uid=$1&do=blog&id=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^archiver/(fid|tid)-(+)\.html$ archiver/index.php?action=$1&value=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(+*)-(+)\.html$ plugin.php?id=$1:$2&%1
###结束


Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
  

  

  




页: [1]
查看完整版本: Apache rewrite模块安装及discuz伪静态配置