nginx的重定向
rewrite 结合nginx提供的全局变量和自定义的变量,结合正则表达式以及标志位实现URL重写以及重定向
rewrite 执行顺序
1、执行server块里的rewrite
2、 执行location里定义的rewrite
3、 选定location中的rewrite
rewrite中可以用if语句(只有if,没有else)
rewrite语法
rewrite <regex><replacemnet>[flag]
<regex>:正则表示式
<rep7acemnet>:跳转的内容或者路径
[ flag ]:标志位,"标记"
flag位
1、last
本条规则匹配完成后,继续向下匹配新的location URI规则
rewrite ky30 k31 last;
location / {
root html
rewrite last
}
2、break
本条规则匹配完之后立即终止,页面内容变化,uri不变
3、redirct
临时重定向302 uri的地址会发生变化
4、permanent
永久重定向301 uri的地址会发生变化
搜索引擎的权重
永久重定向会加入搜索引擎的排名,但是临时不会加入搜索引擎的权重
internal redirection cycle while processing
处理请求时发生了重写或者内部重定向循环,进入了无限循环。nginx循环最多可以执行10次,会报错,500
总结:rewrite 和 location 都可以跳转,似乎有点像,但是区别在于:rewrite 是在同一域名之内进行更改获取资源的路径;location 是对路径访问控制
重点:
location 匹配的写法
location = /
精确匹配,完全匹配【优先级最高】
正则匹配
location ^~ 【第二优先级】
location ~* 【第二优先级】
location /test 【第三优先级】
location / 【第四优先级】
location 是访问控制,匹配到之后不再向下匹配
网站设置location规则
1、精确匹配,主要是为了匹配首页
2、location ^~ location ~* 指定内容匹配
3、location / 主要是为了做反向代理,把动态请求转发给后端服务器
rewrite:
permanent 永久重定向
redirect 临时重定向
break:
跳转,跳转之后不再继续匹配,而且不改变uri
last
继续向下匹配,nginx只能循环10次,超过10次就会报错,500
(internal redirection cycle while processing 处理请求时发生了重写或者内部重定向循环,进入了无限循环。nginx循环最多可以执行10次,超过10次,会报错,500)