Nginx——Rewrite
文章目录
一、rewrite介绍
1、什么是Rewrite
Rewrite又称URL Rewrite,即URL重写,就是把传入Web的请求重定向到其他URL的过程。
URL Rewrite最常见的应用是URL的伪静态化,是将动态界面显示为静态页面的一种技术。比如http://www.123.com/news/index.php?id=123 使用URLRewrite 转换后可以显示为 http://www.123.com/news/123.html对于追求完美主义的网站设计师,就算是网页的地址也希望看起来尽量简洁明快。理论上,搜索引擎更喜欢静态页面形式的网页,搜索引擎对静态页面的评分一般要高于动态页面。所以,UrlRewrite可以让我们网站的网页更容易被搜索引擎所收录。
• 从安全角度上讲,如果在URL中暴露太多的参数,无疑会造成一定量的信息泄漏,可能会被一些黑客利用,对你的系统造成一定的破坏,所以静态化的URL地址可以给我们带来更高的安全性。
• 实现网站地址跳转,例如用户访问360buy.com,将其跳转到jd.com。例如当用户访问tianyun.com的 80端口时,将其跳转到443端口。
2、Rewrite 相关指令
Nginx Rewrite 相关指令有 if、rewrite、set、return
二、Rewrite的if语句
应用环境
server,location
语法:
if (condition) { … }
if 可以支持如下条件判断匹配符号
在匹配过程中可以引用一些Nginx的全局变量
举例:
匹配访问的url地址是否是个目录
匹配访问的地址是否以www开头
三、Rewrite flag
rewrite 指令根据表达式来重定向URI,或者修改字符串。可以应用于server,location, if环境下每行rewrite指令最后跟一个flag标记,支持的flag标记有:
last 相当于Apache里的[L]标记,表示完成rewrite。默认为last。
break 本条规则匹配完成后,终止匹配,不再匹配后面的规则
redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent 返回301永久重定向,浏览器地址会显示跳转后URL地址
Rewrite匹配参考案例:
案例1:
实现访问 http://www.zhangyu.com/a/1.html 后跳转至http://www.zhangyu.com/b/2.html
1、准备工作:配置本地hosts域名解析,创建发布目录
2、编写配置文件
3、重新加载配置文件
4、验证
案例2:
实现访问 http://www.zhangyu.com/2021/a/1.html 时跳转至http://www.zhangyu.com/2022/a/1.html
1、准备工作:配置本地hosts域名解析,创建对应的网站发布目录
2、编写配置文件
3、重新加载配置文件
4、验证
案例3:
实现访问http://www.zhangyucom/a/1.html 跳转至 http://jd.com
1、准备工作:本地域名解析、默认发布目录
2、编写配置文件
3、重新加载配置文件
4、验证
案例4:
实现访问http://www.zhangyu.com/a/1.html 时跳转至 http://jd.com/a/1.html
1、准备工作:本地域名解析、默认发布目录
2、编写配置文件
3、重新加载配置文件
4、验证
案例5:
在访问目录后添加/ (如果目录后已有/,则不加/)
实现访问 http://www.tianyun.com/a/b/c时跳转至http://$host$1$2/
$1:/a/b
$2:c
1、准备工作
2、编写配置文件
3、重新加载配置文件
4、验证
案例6:
实现访问http://www.zhangyu.com/login/zy.html时跳转至http://www.zhangyu.com/reg/login.html?user=zy
1、准备工作
2、编写配置文件
3、重新加载配置文件
4、验证
案例7:
实现访问http://www.zhangyu.com/qf/11-22-33/1.html 时跳转至http://www.zhangyu.com/qf/11/22/33/1.html
1、准备工作
2、编写配置文件
3、重新加载配置文件
4、验证