Apache 1.x 的用户请检查 conf/httpd.conf 中是否存在如下两段代码:
清单 1. Apache 1.x 的加载模块代码
LoadModule rewrite_module libexec/mod_rewrite.so
AddModule mod_rewrite.c
|
Apache 2.x 的用户请检查 conf/httpd.conf 中是否存在如下一段代码:
清单 2. Apache 2.x 的加载模块代码
LoadModule rewrite_module modules/mod_rewrite.so
|
如果存在,那么在配置文件(通常就是
conf/httpd.conf)中加入如下代码。此时请务必注意,如果网站使用通过虚拟主机来定义,请务必加到虚拟主机配置,即
<VirtualHost> 中去,如果加在虚拟主机配置外部将可能无法使用,改好后将 Apache 重启。稍后再解释这段代码的意思
清单 3. 加入配置文件的代码
LoadModule rewrite_module modules/mod_rewrite.so
<IfModule rewrite_module>
RewriteEngine on
RedirectMatch ^(.*)/([^/]*)\.com$ $1/index.jsp?brand=$2
</IfModule>
|
如果没有加载这个 mod_rewrite 模块,那多半就是 Apache 本身编译的时候就没有编译上 rewrite
模块了,那我们需要手工自己编译一下这个模块。
先找到你的 Apache 最初编译的源代码目录,找到放 mod_rewrite.c 的目录,例如
:/usr/local/src/httpd-2.2.13/modules/mappers, 然后使用 Apache 安装好的 apxs
命令编译即可:
清单 4. 指向源代码目录的代码
/usr/local/apache2/bin/apxs -i -a -c ./mod_rewrite.c
|
编译的过程如下:
清单 5. 编译过程的代码
/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
chmod 644 /usr/local/apache2/modules/mod_rewrite.a
ranlib /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
[activating module `rewrite' in /usr/local/apache2/conf/httpd.conf]
|
如果没有什么错误的话,会在 apache/modules 目录中编译出一个 mod_rewrite.so 文件。
同时
apxs 应该会自动编译并且部署到你的 Apache 目录,会在
vi
/usr/local/apache2/conf/httpd.conf 里加载:
LoadModule
rewrite_module modules/mod_rewrite.so
如果没有部署,你将 mod_rewrite.so 手工拷贝到的 Apache modules 目录下并且修改 httpd.conf
进行加载即可,例如:/usr/local/apache2/modules
2. 接下来就可以用 rewrite 来将不同的访问 URL 参数化来处理了。Rewrite module
可以用一个正则表达式来匹配用户发送过来的 URL 请求,然后转换成另外一种形式的 URL 请求,然后再交给 Apache 去分发和处理修改后的
URL 页面请求。
我们在 Apache 的 httpd.conf 里加入以下的 code 就可以达到这样的效果。
清单 6. URL 转换的代码
LoadModule rewrite_module modules/mod_rewrite.so
<IfModule rewrite_module>
RewriteEngine on
RedirectMatch ^(.*)/([^/]*)\.com$ $1/index.jsp?brand=$2
</IfModule>
|
熟悉正则表达式的读者,可以看到例子中的 RedirectMatch 后面跟的正则表达式会匹配
http://www.CRL.com/mycompany.com 然后转换为
http://www.CRL.com/index.jsp?brand=mycompany
图 1. 流程图
分享到:
相关推荐
linux_apache_rewrite编译配置.pdf
linux_apache_rewrite编译配置整理.pdf
apache_rewrite语法的详细解析,实现php的URL重写。
该文档简单描述了Apache URL Rewrite功能配置过程,适用于所有开发服务部署人员。。
iis怎样配置Rewrite伪静态:IIS6下的网站配置Rewrite伪静态组件教程说明
Apache Rewrite Module 重定向 偏避的注意点
Apache的Mode Rewrite模块和.htaccess文件配合.docx
apache rewrite_module模块使用教程
平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 2.Apache Rewrite的配置 Apache下的Rewrite配置主要有两种,一种是针对整个apache服务器的配置,此种配置的Rewrite规则是直接在httpd.conf下书写。配置步骤...
apache 开启重定向 rewrite的实现方法 1.开启重定向模块 $ ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enable/rewrite.load 2.修改配置文件(某些php框架需要) $ vim /etc/apache2/...
如何在Apache 服务器下配置URL 静态化的 Rewrite 规则.docx
NULL 博文链接:https://newtime.iteye.com/blog/450305
珍藏的Apache mod write 帮助手册,希望对大家有用
PHP100视频教程54:Apache.Rewrite.拟静态配置.rar
如何在Ubuntu下启动Apache的Rewrite功能.docx
方法有两种一种是编译apache的时候就直接 安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。二、在Apache配置中启用Rewrite打开配置文件httpd.conf: 代码如下:1....
如果你的apache已经安装好了,现在只想编译出mod_rewrite.so模块,在apache中进行加载,下面我们就介绍这个方法。 以Fedora操作系统进行举例: 1)首次安装apache,在编译时增加——enable-rewrite选项。 如。/...
将源码解压缩 上传到配置好的网站根目录之后 只有首页能访问 其他页面404 ? 使用的是TP/laravel框架开发的源码 路径会出现问题 修改httpd.conf 打开 LoadModule rewrite_module modules/mod_rewrite.so 找到上述...
本篇文章详细介绍了Apache之Rewrite和RewriteRule规则以及http强转https的配置总结,可作为平时运维手册.特此分享,希望能帮助到有用到的朋友!