Rewrite基本概述
什么是Rewrite
- Rewrite主要实现url地址重写,以及重定向,就是把传入Web的请求重定向到其他URL的过程。
Rewrite使用场景
- 地址跳转,用户访问www.nana.com这个URL时,将其定向至一个新的域名 dada.nana.com。
- 协议跳转,用户通过http协议请求网站时,将其重新跳转至https协议方式。
- 伪静态,将动态页面显示为静态页面方式的一种技术,便于搜索引擎的录入,同时减少动态URL地址对外暴露过多的参数,提升更高的安全性。
- 搜索引擎,SEO优化依赖于URL路径,好记的URL便于支持搜索引擎录入。
Rewrite标记Flag
rewrite指令根据表达式来重定向url
,或者修改字符串。可以应用于server,location,if
环境下,每行rewrite
指令最后跟一个flag
标记,支持flag
标记如下所示:
last 本条规则匹配完成后,停止匹配,不再匹配后面的规则 # 开发用的比较多
break 本条规则匹配完成后,停止匹配,不再匹配后面的规则 # 开发用的比较多
redirect 返回302临时重定向,地址栏会显示跳转后的地址
permanent 返回301永久重定向,地址栏会显示跳转后的地址
last与break的区别对比
- lb01服务器
1. 修改Nginx配置文件
vim /etc/nginx/conf.d/rewrite.conf
server {
listen 80;
server_name rewrite.nana.com;
root /code;
location ~ ^/break {
rewrite ^/break /test/ break;
}
location ~ ^/last {
rewrite ^/last /test/ last;
}
location /test/ {
default_type application/json;
# 定义字符串类型,参照/etc/nginx/mime.types文件
return 200 "ok";
}
}
2. 重启Nginx服务
systemctl restart nginx
3. 在本机添加域名解析
C:\Windows\System32\drivers\etc
在hosts文件添加域名解析
192.168.15.5 rewrite.nana.com
- 测试
我们在浏览器中输入rewrite.nana.com/last,可以正常访问到ok。
输入rewrite.nana.com/break,页面返回404错误。
break
- 请求
rewrite.nana.com/break
首先 : 会去查找本地的/code/test/index.html
(默认静态文件)的内容;
如果没有找到该目录则报错404,如果找到了该目录但是没有找到对应的文件则报错403。
last
- 请求
rewrite.nana.com/last
首先 : 会对当前server层重新的发起一次请求,rewrite.nana.com/test/
。
如果有location规则匹配上,则直接返回该location的内容;
如果没有location规则匹配上,会再去查找本地的/code/test/index.html
(默认静态文件)的内容;
如果没有找到该目录则报错404,如果找到了该目录但是没有找到对应的文件则报错403。