规则重写的配置命令-rewriteengine on/off
设置apache是否启用重写引擎
-rewriterule
作用: 为重写引擎定义重写规则
格式: rewriterule 正则表达式 替代字符串 [标记]
正则表达式元字符:
.任意一个单字符
[chars]字符类: "chars"中的任意一个字符
[^chars]字符类: 不在"chars"中的字符
text1|text2选择: text1 或 text2
?前面的字符出现0 或 1 次
*前面的字符出现0 或 N 次(N > 0)
+前面的字符出现1 或 N 次(N > 1)
^锚定到行首
$锚定到行尾
\字符转义字符
标记: C 链接到下一条件规则
F强制禁止URL
G强制废弃URL
L结尾规则
N跳转到开头、从开再来
NC忽略大小写
P强制为代理
R强制为重定向
实例:rewriterule ^/$http://bbs.51osos.com [R,L]
//对网站根目录的访问请求全转向http://bbs.51osos.com
-rewritecond
作用:定义重写发生的条件
格式:rewritecond 字符串 正则表达式[标记]
字符串所包含一些特殊字符:
a. $N反向rewriterule中的分组
b. %N反向rewritecond中的分组
c. 服务器变量
%{HTTP_USER_AGENT}客户机信息,包括操作系统和浏览器信息
%{HTTP_HOST}请求的主机名
%{REMOTE_ADDR}客户机IP地址
%{REMOTE_HOST}客户机的主机名
%{REMOTE_PORT}客户机连接服务器所有端口
%{REQUEST_METHOD}客户机的请求方法
%{REQUEST_FILENAME}客户机的请求的文件名
%{REQUEST_URI}客户机请求URI
%{DOCUMENT_ROOT}服务器的站点主目录
%{SERVER_NAME}服务器的名称
%{SERVER_ADDR}服务器的IP地址
%{SERVER_PORT}服务器的端口号
特殊比较符号:
<小于
>大于
=等于
-d判断是不是存在的目录
-f判断是不是存在的普通文件
-s判断是不是为非空的普通文件
-x判断是不是为可执行的文件
-l判断是不是为链接文件
-U判断是不是有效的URL
标记:
-NC忽略大小写
-OR或
实例:rewritecond %{REMOTE_ADDR}^192.168.3.1
-rewritebase
作用:设置目录级重写的基准URL
格式:rewritebase URL-PATH