Nginx rewrite
Nginx rewrite主要功能是实现URL地址重写,需要PCER的支持,前面已经安装。
语法:
rewrite 匹配url 目标url [flag],应用位置 server location if段中。
rewrite 是实现URL重写的关键指令,根据匹配url部分的内容,重定向到目录url上,结尾是flag标记;
比如:
rewrite ^/(.*) http://www.abc.com/$1 permanent;
Flag标记符号 | 说明 |
---|---|
last | 本条规则匹配完成后,继续向下匹配新的locationURL规则 |
break | 本条规则匹配完成即终止,不再匹配后面的任何规则 |
redirect | 返回302临时重定向,浏览器地址栏会显示跳转后的URL地址 |
permanent | 返回301永久重定向,浏览器地址栏会显示跳转后的url地址 |
案例1:简单重写,访问index.php 重写到abc.html
rewrite ^/index\.php /abc.html last;
案例2:实现访问 http://www.nihao.com时跳转到http😕/www.abc.com
rewrite ^/(.*) http://www.abc.com/$1 break;
break与last的区别
location ~ ^/break {
rewrite ^/break /test break;
}
location ~ ^/last {
rewrite ^/last /test last;
}
location /test{
root abc;
index 123.html;
}
注意 当访问 域名/test url时,实际上是返回的 abc/test/123.html页面的内容;
本条规则匹配完成后,继续向下匹配新的locationURL规则
redirect与permanent区别
301永久重定向,浏览器会记住,
比如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网站;
301重定向;
rewrite ^/(.*) http://www.nihao.com/$1 permanent;
302重定向只是暂时的重定向,搜索引擎会抓取新的内容而保留旧的地址,因为服务器返回302,所以,搜索搜索引擎认为新的网址是暂时的。
而301重定向是永久的重定向,搜索引擎在抓取新的内容的同时也将旧的网址替换为了重定向之后的网址。