java nginx url重写_Nginx Web服务应用中URL地址重写——Nginx rewrite

1515220966883706.jpeg

什么是Nginx rewrite

和Apache等Web服务软件一样,Nginx rewrite的主要功能也是实现URL地址重写。Nginx的rewrite规则需要PCRE软件的支持,即通过Perl兼容正则表达式语法进行规则匹配。前文在安装Nginx软件时就已经安装了这个PCRE软件,同时也让Nginx支持了rewrite的功能,默认参数编译时,Nginx就会安装支持rewrite的模块,但是,也必须要有PCRE软件的支持。

Nginx rewrite语法

1.rewrite指令语法

指令语法:rewrite regex replacement [flag];

默认值:none

应用位置:server、location、if

rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分的内容,重定向到replacement部分,结尾是flag标记。下面是一个简单的URL rewrite跳转的例子:

rewrite ^/(.*) http://www.etiantian.org/$1 permanent;

在上述指令中,rewrite为固定关键字,表示开启一条rewrite匹配规则,regex部分是/(.*),这是一个正则表达式,表示匹配所有,匹配成功后跳转到http://www.etiantian.org/$1。这里的$1是取前面regex部分括号里的内容,结尾的permanent;是永久301重定向标记,即跳转到后面的http://www.etiantian.org/$1地址上。

2.regex常用正则表达式说明

1baf726e77fb84d6c70953f206fe93cd.png

3.rewrite指令结尾的flag标记说明

rewrite指令的最后一项参数为flag标记.

235d723884e8a8c381cdd0dc22324017.png

在以上的flag标记中,last和break用来实现URL重写,浏览器地址栏的URL地址不变,但在服务器端访问的程序及路径发生了变化。redirect和permanent用来实现URL跳转,浏览器地址栏会显示跳转后的URL地址。

last和break标记的实现功能类似,但二者之间有细微的差别,使用alias指令时必须用last标记,使用proxy_pass指令时要使用break标记。last标记在本条rewrite规则执行完毕后,会对其所在的server{………}标签重新发起请求,而break标记则会在本条规则匹配完成后,终止匹配,不再匹配后面的规则。

Nginx rewrite的企业应用场景

Nginx的rewrite功能在企业里应用非常广泛:可以调整用户浏览的URL,使其看起来更规范,合乎开发及产品人员的需求。

为了让搜索引擎收录网站内容,并让用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。

网站换新域名后,让旧域名的访问跳转到新的域名上,例如:让京东的360buy换成了jd.com。

根据特殊变量、目录、客户端的信息进行URL跳转等。

Nginx rewrite 301跳转

以往我们是通过别名的方式实现haiyuancloud.cn和www.haiyuancloud.cn访问同一个地址的,事实上,除了这个方式以外,还可以使用Nginx rewrite 301跳转的方式来实现。

实现的配置文件如下:

354450eec4d995cc720605575a7439dc.png[root@private conf]# cat extra/www.conf

server {

listen 80;

server_name haiyuancloud.cn;

rewrite ^/(.*) http://www.haiyuancloud.cn/$1 permanent;

location / {

root html/www;

index index.html index.htm;

}

error_page 404 /404.html;

location = /404.html {

root html/blog;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html/blog;

}

access_log logs/access_blog.log main;

}

配置后,在浏览器输入:haiyuancloud.cn,运行后浏览器会变成:www.haiyuancloud.cn

83b018600095662c51787692266dd329.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值