nginx 地址重写
什么是URL重写:
URL重写是指将一个URL请求重新写成网站可以处理的另一个URL的过程。
为什么要重写:
- URL伪静态化:访问一个静态网址,跳转到一个动态网址上。这样做的目的是因为搜索引擎更喜欢静态页面形式的网页,搜索引擎对静态页面的评分一般要高于动态页面。所以,UrlRewrite可以让我们网站的网页更容易被搜索引擎所收录。
- 更加安全:URL可能会暴露资源存放的具体位置,避免被不怀好意的人利用。
- 网站地址跳转:如访问80端口,跳转到443端口。
地址重写指令:
if , return ,rewrite ,set
-
语法
if (判断条件) { } 支持的判断符号有:~ ,~* ,!~ ,!~*,-f和!-f ,-d和!-d,-e和!-e,-x和!-x
~ | 匹配正则,区分大小写 |
---|---|
~* | 匹配正则,不区分大小写 |
!~ | 不匹配正则,区分大小写 |
!~* | 不匹配正则,不区分大小写 |
-f和!-f | 是否存在文件 |
-d和!-d | 是否存在目录 |
-e和!-e | 是否存在文件或目录 |
-x和!-x | 文件是否可执行 |
- 支持server和location
- 语法:rewrite 原地址 目标地址 flag
- flag:
last | 表示完成rewrite,一般在if和server语句中,不终止重写后的url |
---|---|
break | 完成本条规则后不在匹配其他的,一般在location中 |
redirect ==302 | 返回带有302代码的临时重定向,浏览器地址会显示跳转后的URL地址。 |
permanent ==301 | 返回301代码的永久重定向,浏览器地址栏会显示跳转后的URL地址。 |
redirect和permanent有一定区别,301会将老地址数据带到新地址上,搜索引擎会把老地址彻底废除,302重定性时,搜索引擎会查看跳转前后哪一个地址更直观而自己选择是否跳转,所以会出现网页劫持现象。
- 可用于(server location if)