• 欢迎访问Ppabc博客网站,专注于Linux、CentOS、Apache、Nginx、MySQL、PHP等开源工具安装优化的技术博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入Ppabc博客
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏Ppabc博客吧

mod_rewrite 模块学习+测试实例

baidu空间 admin 12年前 (2008-03-05) 377次浏览

下面收集整理学习过程中碰到的实例,方便自己理解,也希望大家能够交流指正.

1.RewriteBase

RewriteBase 指令显式地设置了目录级重写的基准 URL。

例:在服务器上虚拟一个 microsea 的目录这个 microsea 目录不存在,它对应真实服务器的/home/httpd/html

希望的效果:http://10.10.10.10/microsea/index.html 重写为http://10.10.10.10/go.html则有两步:

(1).在 httpd.conf 下

DocumentRoot /home/httpd/html

ServerName 10.5.17.167

alias /microsea /home/httpd/html

Options FollowSymLinks

AllowOverride All


(2).在/home/httpd/html/.htaccess 文件中:

RewriteEngine on

RewriteBase /microsea

RewriteRule ^index\.html$ go.html
2.RewriteCond

定义重写发生的条件

语法:RewriteCond TestString CondPattern [flag]

3.RewriteMap

定义用于关键词查找的映射函数

语法: RewriteMap MapName MapType:MapSource

4.RewriteRule

为重写引擎定义规则

语法:RewriteRule Pattern Substitution

测试实例:将http://10.10.10.10/abc 跳转到http://10.10.10.10/m/?abc

.htaccess 文件内容:

RewriteEngine on

RewriteCond %{REQUEST_URI} !^(.+)\.(.+)$

RewriteRule ^(.+[^/])$ http://10.10.10.10/m/?$1
说明: RewriteCond 条件判断获得的 URI 是否符合规定,%{REQUEST_URI}获得的内容为/abc

注意是 URI 不是 URL.

!^(.+)\.(.+)$ !表示否定, ^(.+)\.(.+)$正则表达式,表示 xxx.xxx 格式的文件,如 abc.html 或 abc.php

整句的意思是判断用户访问http://10.10.10.10/abc时传输到服务器的/abc 的内容是否是 xxx.xxx 的文件,不是则做 RewriteRule 的动作.是则不满足条件,如用户访问的是 http:/10.10.10.10/abc.php 这不做跳转动作.

^(.+[^/])$ 正则表达式判断 URI 是否最后带/ ,如果带/也不做跳转.

转载 http://www.givingtree.com.cn/category/%E8%B5%84%E8%AE%AF%E7%81%AB%E8%8D%AF%E5%BA%93?page=5

]]>


Selinux 中国 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mod_rewrite 模块学习+测试实例
喜欢 (0)