二、Nginx rewrite
介绍
- 主要功能是实现
URL
地址重写,需要PCER
的支持。 - 应用位置:
server
、location
、if
中都可以。 - 语法:
rewrite
是实现URL
重写的关键指令,根据匹配URL
部分的内容,重定向到目标URL
上,结尾是flag
标记。
rewrite 匹配URL(正则表达式) 目标URL [flag];
flag
标记符号
Flag 标记符号 | 说明 |
last | 本条规则匹配完成后,继续向下匹配新的 location URL 规则 |
break | 本条规则匹配完成即终止,不再匹配后面的任何规则 |
redirect | 返回 302 临时重定问,浏览器地址栏会显示跳转后的 URL 地址 |
permanent | 返回 301 永久重定向,浏览器地址栏会显示跳转后的 URL 地址 |
last
和break
用来实现URL
重写,浏览器地址栏的URL
地址不变,单在服务器端访问的程序及路径发生了变化。redirect
和permanent
用来实现URL
跳转,浏览器地址栏会显示跳转后的URL
地址。redirect
与permanent
的区别
3011
永久重定向,浏览器会记住,比如a.com
网站301
到b.com
网站,浏览器输入a.com
时,就不请求a.com
了,而是直接请求b.com
了。302
临时重定向,浏览器不记住,比如a.com
网站302
到b.com
网站,浏览器输入a.com
时,还是请求a.com
,根据a.com
网站响应的location
内容,再去请求b.com
网址。
三、Nginx rewrite
案例使用
- 简单案例:访问
index.html
重写到abc.html
。
- nginx.conf:
server { listen 8081; server_name www.xyq.com; location / { root /usr/local/var/xyq; index index.html; } rewrite ^/index\.html /abc.html permanent; }
- 配置好之后,执行
$ nginx -s reload
,打开http://www.xyq.com:8081
或http://www.xyq.com:8081/index.html
,因为配置的主页面就是index.html
所以可以不写。
- 简单案例:访问
index.html
重写到百度
。
server { listen 8081; server_name www.xyq.com; location / { root /usr/local/var/xyq; index index.html; } rewrite ^/index\.html https://www.baidu.com permanent; }
- 刷新 nginx 之后打开
http://www.xyq.com:8081
就会跳转到百度。