一.定义
二.作用
1.调整用户浏览的url,模板更规范
2.提升搜索引擎网站给予用户的体验,可以将动态的url伪装成静态地址提供服务
3.在网站更换新域名后,可以通过旧域名访问到新域名
4.便于根据特殊变量1、客户信息进行url调整
三.区分地址重写和转发
1.地址重写和地址转发
2.地址转发时只会有一次网络访问请求,重写一般会有两次
3.地址转发发生在同一站点的不同项目之间,地址重写没有这个限制
4.地址重写的页面的路径需要完整路径,转发则不需要
5.地址转发可以将客户请求的数据属性传递到新的界面,而地址重写不可以,仅仅是将页面定向到服务器选定的地址
6.地址重写的速度比转发慢
四.rewrite的语法规则
1.格式
2.几个flag标记符号介绍
五.例子
1.访问不存在的网页时定向到某个界面
(1)使用if+rewrite
(2)使用try_files
2.为某个目录定义别名,用户访问的路径其实并不存在,而是将其转发到另外一个页面
(1)创建bbb目录存放index.html文件
(2)编辑nginx.conf文件
3.实现域名跳转
访问80端口域名跳转到195主机的域名
web服务器中的必备功能,用来实现地址的重写(不是转发),可以让用户在我们网站变动的时候仍然能够通过原来的书签访问到变动后的内容。
地址重写是地址标准化的过程,即使服务器接受了来自用户输入的不同的域名,但服务器再此之中选择确定的一个,那么客户端浏览器中的地址会改变为服务器选定的地址;而地址转发是数据传输分别到达不同的路由器服务器设备,是一个域名指向一个站点的过程,在地址转发的过程中,浏览器中的地址是不变的。
可以应用在server、location、if等
rewrite regex replacement [flag];
#表示根据regex正则表达式匹配成功后跳转到replacement
last——本条规则匹配完成后, 继续向下匹配新其他uri规则
break——本条规则匹配完成即终止, 不再匹配后面的任何规则
redirect——返回 302 临时重定向, 浏览器地址栏会显示跳转后的url地址
permanent——返回 301 永久重定向, 浏览器地址栏会显示跳转后的url地址
server {
listen 80;
server_name www.aabb.com;
error_log /usr/local/src/nginx-1.22.0/logs/error.log;
access_log /usr/local/src/nginx-1.22.0/logs/access.log;
location / {
root /usr/local/src/nginx-1.22.0/html/ip; #这个目录里不要存在index.html文件
index index.html index.htm;
if (!-f $request_filename) {
rewrite /. /err.html permanent; #这个err.html要放在上面那个html/ip目录里
}
}
server {
listen 80;
server_name www.aabb.com;
root /usr/local/src/nginx-1.22.0/html/ip;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location = /err.html {
root /usr/local/src/nginx-1.22.0/html/ip;
}
error_page 404 /err.html;
}
[root@localhost ip]# pwd
/usr/local/src/nginx-1.22.0/html/ip
[root@localhost ip]# ll
total 4
drwxr-xr-x 2 root root 24 Aug 11 12:54 bbb
-rwxrwxrwx 1 root root 6 Aug 11 11:39 err.html
[root@localhost ip]# cat bbb/index.html
bbb
server {
listen 80;
server_name www.aabb.com;
error_log /usr/local/src/nginx-1.22.0/logs/error.log;
access_log /usr/local/src/nginx-1.22.0/logs/access.log;
location / {
root /usr/local/src/nginx-1.22.0/html/ip;
index index.html index.htm;
rewrite ^/aaa/(.*) /bbb/$1 last; #aaa目录实际上不存在,在访问aaa时跳转访问bbb目录的内容
}
}
server {
listen 80;
server_name www.aabb.com;
rewrite ^/.* http://www.llss.com/$1 last;
error_log /usr/local/src/nginx-1.22.0/logs/error.log;
access_log /usr/local/src/nginx-1.22.0/logs/access.log;
location / {
root /usr/local/src/nginx-1.22.0/html/ip;
index index.html index.htm;
}
}
server {
listen 192.168.2.195;
server_name www.llss.com;
location / {
root /usr/local/src/nginx-1.22.0/html/ip;
index index1.html index.htm;
}
}