nginx的重定向

nginx的重定向

rewrite 结合nginx提供的全局变量和自定义的变量,结合正则表达式以及标志位实现URL重写以及重定向

rewrite 执行顺序

1、执行server块里的rewrite

2、 执行location里定义的rewrite

3、 选定location中的rewrite

rewrite中可以用if语句(只有if,没有else)

rewrite语法

rewrite [flag]

:正则表示式

:跳转的内容或者路径

[ 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)

你可能感兴趣的:(nginx,mysql,数据库)