# 伪静态规格
/**
* RewriteCond # 判断
* RewirteRule # 匹配规则
* RewirteBase # 跟目录
* RewirteMap # 地址映射地图,
*/
# rewrite 日志功能
# apache2.4 以上版本的 LogLevel
# 设置 LogLevel alert rewrite:trace8 (1~8)
# 查看 apace_error.log 日志文件
# 只能在conf文件中设置,不能在.htaccess
/***************************************************************************************/
# RewriteRule 语法
# RewriteRule 模式匹配 替换的URL [flags]
# 模式匹配支持Perl 格式 的正则表达式。和 rewrite 的变量
# 替换的url 支持模式匹配的结果和 rewrite变量
# 多个flag 用逗号隔开[R=302,C]
# RewriteRule ^(.*).htm$ /$1.html
# R flag 说明
# 强制外部重定向,后面可以加301,302 跳转 不加默认302 301 临时重定向 302 永久重定向
# 例: RewriteRule ^/?(.*)\.html$ /src/$1.php [R=302]
# 区别于内部重定向,浏览器上的地址会改变
# RewriteRule ^(.*).htm$ /$1.html [R=301]
# C falg 说明
# 链接下一个规则
# RewriteRule ^/?(.*)\.html$ /src/$1.htm [C]
# RewriteRule ^/?(.*)\.htm$ /src/$1.php
# 与下一条规则成为一个整体,如果第一条不匹配,下一条就不进入了
# L flag 说明
# 结尾规则,立即停止重写操作,并不再应用其他重写规则
# RewriteRule ^(.*) first.php?req=$1 [L]
# RewriteRule ^(.*) second.php?req=$1
# NE flag 说明
# 不对 URL 中特殊字符进行hexcode 转码
# RewriteRule ^(.*)\.htm /index.html#$1 [R,NE]
# NC flag 说明
# 不区分大小写 本身是大小写敏感的
# RewriteRule ^test/(.*) src/$1 [NC]
# G flag 说明
# 请求的网页已经失效了(Gone) Apache 服务器会返回410
# RewriteRule ^oldurl.*$ - [G]
# QSA flag 说明
# 用于在URL 中截取查询字符串 即 ? 后面的内容
# RewriteRule ^ per/(.*)$ /pre.php?person_id=$1 [QSA,R]
# 访问 /per/123.php?name=xiaoming
# RewriteBase URL-path
# 设置了目录级别重写的基准url 即跟目录
# RewriteBase /tmp/
# RewriteRule ^(.*)\.html$ $1.htm [R]
/***************************************************************************************/
# RewriteCond TestString CondPattern [flags]
# RewriteCond 指令定义了一个规则的条件
# 即在一个RewriteRule 指令之前有一个或多个RewriteCond 指令
# testString 说明
# $1~9
# %{name_of_variable} 直接调取服务器变量
# %1~9 RewriteCond 条件中最后符合的条件中的分组成分
# $1~9 引用紧跟在RewriteCond 后面的RewriteRule中模板中匹配的数据
# RewiteCond $1 "test"
# RewriteRule ^(.*)\.htm /$1.html
# 当 用IP访问的时候,替换成用域名
# RewriteCond %{HTTP_HOST} "127.0.0.1"
# RewriteRule ^(.*)\.htm http://localhost/$1.html [R]
# RewriteCond %{HTTP_HOST} "127.0.0.(.*)"
# RewriteCond %1 "1"
# CondPattern 说明
# -d 是否是目录 -f 是否是文件
# flags
# [NC] 大小写不敏感
# [OR] 逻辑 或 不加默认是 AND
/***************************************************************************************/
# RewriteMap MapName MapType:MapSource 在http_conf 文件里配置
# MapName : 命名给RewriteRule 调用
# MapTyle : map 文件的类型有 txt rnd
# MapSource : map 文件路径
# txt 格式 一一对应
# ${MapName:LookupKey | DefaultValue}
# RewriteMap pages txt:C:/wamp/map.txt
# 文件格式
# test1 pagetest1
# test2 pagetest2
# RewriteRule ^(.*)\.htm ${pages:$1}/$1.html
# rnd 格式 随机映射
# RewriteMap servers rnd:C:/wamp/rnd.txt
# 文件格式
# url1 s1|s2|s3
# url1 s4|s5
# RewriteRule ^(.*)\.htm ${servers:$1|root}/$1.html
/***************************************************************************************/
# 规则关键字说明和实例
^ 表示匹配字符串的开始位置
$ 表示匹配字符串的结束位置
? 表示匹配前面字符串0个或多个字符串
[chars] 匹配里面一个或者多个字符串
[^chars] 匹配排除里面字符串的字符串
aaa|bbb|ccc 匹配随便一个
() 取值 $1~n
/**************************************************************************************/
# 文件防盗链
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !localhost [NC] # 这里放你的域名
RewriteRule \.(gif|jpg|png)$ - [F,NC]