Rewrite的应用场景:
1,url访问跳转,支持开发涉及
2,SEO优化
3,维护
后台维护,流量转发等
4,安全
Rewrite 正则表达式 定向后的位置 模式
作用范围:server location if
案例:
正则表达式,^表示开头 $表示结尾 {n}次数 [a-z]区间
注意一点:()两个括号之间是用来提取内容的,通过$1 $2 之类进行调用
案例:
(test) 替换成: $1 222
会变成:test 222
测试正则表达式的工具:
yum install pcre -y
pcre
flag:
last 停止rewrite检测
break 停止rewrite检测
redirect 返回302临时重定向,地址栏会显示跳转后的地址
permanent 返回301永久重定向,地址栏会显示跳转后的地址。
last和break的区别:
location ~ ^/break {
rewrite ^/break /test/ break;
}
location ~ ^/last {
rewrite ^/last /test/ last;
}
location /test/ {
default_type application/json;
return 200 '{"status":"success"}';
}
/last 会显示,而/break不会,因为break只会在相应目录中进行查找,找不到就会返回报错,而last还会进行一次新的请求,匹配到/test/
Goods-3.html ---->Goods.php?goods_id=3
goods-([\d]+)\.html ---> goods.php?goods_id =$1
location / {
index index.php;
rewrite goods-([\d]+)\.html$ /ecshop/goods.php?id=$1;
}
注意:用url重写时, 正则里如果有”{}”,正则要用双引号包起来
redirect和permanent
redirect相当于发起了两次请求,先一个302状态的,然后再一个200状态的;permanent相当于永久重定向,浏览器不会向后端的服务器再发起请求,直接重定向。
临时重定向,则会先访问后端服务器
4,rewrite的优先级
执行server块的rewrite指令
执行location匹配
执行选定的location中的rewrite