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]