php 伪静态详解

# 伪静态规格
/**
 * 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]

 

 

 

你可能感兴趣的:(伪静态语法,php,正则验证)