二、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就会跳转到百度。
