nginx rewrite 实现URL跳转

最近工做中经常要改nginx配置,学习了nginx中rewrite的用法php

URL跳转
这里说的URL跳转就是用户在访问一个URL时将其跳转到另外一个URL上。
常见的应用场景是让多个域名跳转到同一个URL上,(例如让旧域名跳转到新域名上)
将静态文件请求跳转到cdn上等
根据用户设备跳转到不一样站点(pc版,wap版)等。
URL跳转能够经过js在页面上设置的window.location实现
也能够经过php设置header来实现
固然也能够用nginx 的 rewrite功能实现nginx

nginx rewrite模块
rewrite 是 nginx的静态重写模块
基本用法是 rewrite patten replace flag
patten是正则表达式,与patten匹配的URL会被改写为replace,flag可选
例如将旧域名跳转到新域名上正则表达式

server
{
listen 80;
server_name www.old.com;
rewrite ".*" http://www.new.com;
}

 


跳转到新域名上时保留路径学习

server
{
listen 80;
server_name www.old.com;
rewrite "^/(.*)$" http://www.new.com/$1;
}

 


rewrite与location配合实现图片文件跳转到cdnspa

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
rewrite "^/uploadfile\/(.*)$" http://static.XXX.com/uploadfile/$1;
}

 


rewrite 后面能够加flag,flag标记有:
last 至关于Apache里的[L]标记,表示完成rewrite
break 终止匹配, 再也不匹配后面的规则
redirect 返回302临时重定向 地址栏会显示跳转后的地址
permanent 返回301永久重定向 地址栏会显示跳转后的地址
---------------------
做者:Mir2
来源:CSDN
原文:https://blog.csdn.net/zaqwsx20/article/details/53128590
版权声明:本文为博主原创文章,转载请附上博文连接!.net