前言

环境:centos7.9 nginx1.8
当我们访问一个地址如:http://www.baidu.com/,你会发现地址变成了:https://www.baidu.com/,由http变成了https,类似的,当我们访问一个地址http://AAAAA.com,地址跳转到了http://BBBB.com,我们称之为URL重定向,或称之为URL跳转,nginx中使用rewrite指令结合正则表达式来实现URL重定向。

return语法

return语法只能放在server、location、if中,该指令用于结束规则的执行并返回状态码给客户端。
示例:

location = /50x.html {return 403;           #直接return一个状态码返回给客户端}

rewrite语法

指令语法:rewrite regex replacement [flag];(即 rewrite 匹配内容 替代内容 标记;)
默认值:none
应用位置:server、location、if
rewrite是实现URL重定向的重要指令,它根据regex(正则表达式)来匹配内容跳转到replacement,结尾是flag标记。

常用正则表达式:

字符 描述
\ 将后面接着的字符标记为一个特殊字符或者一个原义字符或一个向后引用
^ 匹配输入字符串的起始位置
$ 匹配输入字符串的结束位置
* 匹配前面的字符零次或者多次
+ 匹配前面字符串一次或者多次
? 匹配前面字符串的零次或者一次
. 匹配除“\n”之外的所有单个字符
(pattern) 匹配括号内的pattern

rewrite 最后一项flag标记:

标记 说明
last 本条规则匹配完成后继续向下匹配新的location URI规则,客户端地址不会发生跳转
break 本条规则匹配完成后即刻终止,不再继续向下匹配任何规则,客户端地址不会发生跳转
redirect 返回302临时重定向,浏览器地址会显示为跳转后的地址
permanent 返回301永久重定向,浏览器地址会显示为跳转后的地址

rewrite匹配顺序

当你写了多条rewrite,rewrite匹配顺序是从上往下匹配,匹配到之后就不再匹配余下的rewrite规则。

rewrite示例

资源重定向:

[root@iflytek conf.d]# vim rewrite.conf         #创建一个虚拟机
server{listen 9089;server_name localhost;location /{root /usr/local/nginx/html/rewrite;index index.html;try_files $uri $uri/ /index.html;rewrite /index.php /index.html last;   #使用rewrite命令进行资源重定向,模拟客户端访问index.php重定向到index.html}
}#创建index.html文件
[root@iflytek conf.d] mkdir /usr/local/nginx/html/rewrite
[root@iflytek conf.d] vim /usr/local/nginx/html/rewrite/index.html

网页模拟访问index.php(实际并没有这个文件)看是否成功重定向,如下图所示:

域名重定向(以小米官网为例):

server{listen 80;server_name www.xiaomi.com;                 #旧域名www.xiaomi.comrewrite / www.mi.com permanent;               #该旧域名的全部请求都会永久重定向到www.mi.com}.......
}
server{listen 80;server_name www.mi.com;                        #新的域名www.mi.comroot  html/mi/;  }.......
}
#以上域名要能解析(本地host解析或dns解析),这样在浏览器访问http://www.xiaomi.com时就会跳转到http://www.mi.com

URL重定向,rewrite命令相关推荐

  1. .htaccess技巧: URL重写(Rewrite)与重定向(Redirect)

    http://lesca.me/archives/htaccess-rewrite.html/comment-page-1#comment-16045 目录 Table of Contents 一.准 ...

  2. 使用ATS中的regex_remap插件实现正则匹配的url重定向

    要点总结如下: 1.正向和反向代理可以同时并存,并且remap可以兼容这两种模式. 2.在使用regex_map时,是借助remap的配置来设置,而且remap.so和regex_remap.so已经 ...

  3. Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向

    原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...

  4. SVN -客户端URL地址修改命令

    SVN客户端URL地址修改命令:. switch --relocate FROM TO [PATH...] Rewrite working copy URL metadata to reflect a ...

  5. Apache URL重定向指南

    Apache URL重定向指南 2004-01-28 21:01:11 Engelschall 阅读 <script src="http://www.meetchinese.com/e ...

  6. java httpclient 重定向_用Apache HttpClient实现URL重定向

    很多网站都使用了URL重定向技术,把一个原始请求从一个位置路由到另一个位置.原因可能是多方面的,比如域名转发.URL缩写.隐私保护.在同一网站维持相似的域名等. 本文讲述怎样使用Apache HTTP ...

  7. python漏洞检测脚本_URL重定向漏洞,python打造URL重定向漏洞检测脚本

    前言: 今天学习了重定向漏洞,这个漏洞比较好理解 漏洞名:URL重定向漏洞 威胁:低 漏洞的来源:开发者对head头做好对应的过滤和限制 例子: 有漏洞的网站:http://a.com/x.php?u ...

  8. 用Apache HttpClient实现URL重定向

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow <用Apac ...

  9. python get请求 url传参_requests的get请求url参数、url重定向处理及cookies

    需求:在百度搜索www.python66.com,然后将搜索结果保存到文件bd_python66.html 百度搜索的url:https://www.baidu.com/s?wd=搜索词 params ...

  10. HttpClient_用Apache HttpClient实现URL重定向

    很多网站都使用了URL重定向技术,把一个原始请求从一个位置路由到另一个位置.原因可能是多方面的,比如域名转发.URL缩写.隐私保护.在同一网站维持相似的域名等. 本文讲述怎样使用Apache HTTP ...

最新文章

  1. c语言 可变参数的宏,可变参数的宏__ VA_ARGS__的用法
  2. 在IIS7里配置 ISAPI,运行dll程序,总提示下载dll
  3. kalilinux安装VMware Tools(水文)
  4. BSS段、数据段、代码段、堆与栈
  5. 导师推荐 | 第 5 期临床基因组家系分析,同时解决科研和临床问题
  6. Atitit.ide技术原理与实践attilax总结
  7. Acuro二维码识别与降落对准
  8. python selenium下载图片_selenium下载图片(原图)
  9. Linux C聊天室的实现
  10. pdf转word思路和方法
  11. 记一次抗DDOS演练
  12. Android 监听手机按下Home键
  13. 名帖51 王羲之 小楷《佛遗教经》
  14. 如何制定SEO文章发布模板?
  15. 美通社企业新闻汇总 | 2019.2.26 | 华为企业业务首登MWC发布数字平台;爱茉莉与屈臣氏达成战略合作...
  16. (DEAP)基于图卷积神经网络的脑电情绪识别(附代码)
  17. 珠海:處在二次且全角落升值發展的城市
  18. php聊天室的设计实现,基于PHP+MySQL的聊天室设计
  19. 游客模式android,Android之游客登录模式
  20. 机器人控制——PID参数整定

热门文章

  1. 684.冗余连接(力扣leetcode) 博主可答疑该问题
  2. 连表查询 mysql实例_mysql中各种常见join连表查询实例总结
  3. 【python 类】【部分转发】设计模式 -- 责任链模式 (类之间的联动)
  4. springboot 线程池和数据库链接池配置以及多线程效率实测
  5. C语言中strstr函数
  6. linux python 链接 oracle
  7. 如何实现:GridView 控件中显示的文本不自动换行,隐藏超出宽度部分wj-wangjun
  8. android sid如何验证有效性,使用RMAN验证备份的有效性
  9. 【Spring-tx】事务逻辑
  10. 面试题之TCP三次握手和四次挥手详解