nginx rewrite 实现URL跳转的方法

微信扫一扫,分享到朋友圈

nginx rewrite 实现URL跳转的方法
收藏 00

最近工作中常常要改nginx配置,学习了nginx中rewrite的用法.

URL跳转

这里说的URL跳转就是用户在访问一个URL时将其跳转到另一个URL上。

常见的应用场景是让多个域名跳转到同一个URL上,(例如让旧域名跳转到新域名上)

将静态文件请求跳转到cdn上等

根据用户设备跳转到不同站点(pc版,wap版)等。

URL跳转可以通过js在页面上设置的window.location实现

也可以通过php设置header来实现

当然也可以用nginx 的 rewrite功能实现

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配合实现图片文件跳转到cdn
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永久重定向 地址栏会显示跳转后的地址

扩展

Nginx根据URL跳转到不同的页面

Nginx判断来路查询语句是否包含有Q=**,重写到https://xxxx.com/?Q=1010000004615312

if ( $query_string ~ "^Q=(.*)$" ){
    rewrite ^ "https://xxxx.com/" last;
}

set $test 0;
if ($http_referer ~* "a.com") {
  set $test 1;
}
if ($http_referer ~* "b.com") {
  set $test 1;
}
if ($test = 1) {
  return http://c.com;
}

$request_uri 

 

一个热爱互联网的咸鱼
上一篇

帝国cms新建系统模型时主表与副表的区别

下一篇

python爬虫requests库用到的一些知识

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片

热门

    抱歉,30天内未发布文章!
返回顶部