一:Rewrite基本概述

1.Rewrite简介
  1. Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程。
2.Rewrite基本概述
  • 1.地址跳转,用户访问www.linux.com这个URL是,将其定向至一个新的域名www.baidu.com。
  • 2.协议跳转,用户通过http协议请求网站时,将其重新跳转至https协议方式。
  • 3.伪静态,将动态页面显示为静态页面方式的一种技术,便于搜索引擎的录入,同时建上动态URL地址对外暴露过多的参数,提升更高的安全性。
  • 4.搜索引擎,SEO优化依赖于url路径,好记的url便于搜索引擎录入。

3.Rewrite作用
  1. URL RewriteURL重写,就是把传入Web的请求重定向到其他URL的过程。URL Rewrite最常见的应用是URL伪静态化,是将动态页面显示为静态页面方式的一种技术。比如http://www.123.com/news/index.asp?id=123 使用UrlRewrite转换后可以显示为http://www.123.com/news/123.html。
4.什么是URL?
  1. URL 代表着是统一资源定位符(Uniform Resource Locator)。URL 无非就是一个给定的独特资源在 Web 上的地址。理论上说,每个有效的 URL 都指向一个唯一的资源。这个资源可以是一个 HTML 页面,一个 CSS 文档,一幅图像,等等。而在实际中,也有一些例外,最常见的情况就是一个 URL 指向了不存在的或是被移动过的资源。由于通过 URL 呈现的资源和 URL 本身由 Web 服务器处理,因此 web 服务器的拥有者需要认真地维护资源以及与它关联的URL

二:rewrite语法

  1. 语法
  2. Syntax: rewrite regex replacement [flag];
  3. 默认情况
  4. Default:
  5. 应用场景
  6. Context: server, location, if
  7. rewrite # 模块命令
  8. regex # 请求的链接(支持正则表达式)
  9. replacement # 跳转的链接
  10. [flag]; # 标签
  1. location /download/ {
  2. rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;
  3. rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra break;
  4. return 403;
  5. 默认类型
  6. }
  1. 解析:
  2. 正则表达式方式:
  3. 命令 http://www.123.com/news/index.asp? 匹配目录/mps/匹配文件视频.mps 结束

三:Rewrite标记Flag

  1. rewrite指令根据表达式来重定向URL,或者修改字符串,可以应用于serverlocationif环境下,每行rewrite指令最后跟一个flag标记,支持的flag标记有如下表格所示:
flag 作用
last 本条规则匹配完成后,停止匹配,不再匹配后面的规则
break 本条规则匹配完成后,停止匹配,不再匹配后面的规则
redirect 返回302临时重定向,地址栏会显示跳转后的地址
permanent 返回301永久重定向,地址栏会显示跳转后的地址
1.last和break的区别
  • 实战案例
  1. server {
  2. server_name _;
  3. listen 80;
  4. location ~ ^/break {
  5. rewrite (.*) /test break;
  6. }
  7. location ~ ^/last {
  8. rewrite (.*) /test last;
  9. }
  10. location /test {
  11. default_type text/html;
  12. return 200 "test";
  13. }
  14. }
2.break请求:
  1. 1.请求linux.rewrite.com/break
  2. 2.匹配 location ~ ^/break 会跳转到 linux.rewrite.com/test
  3. 3.请求跳转后,回去查找本地站点目录下的 /test
  4. 4.如果找到了,则返回/code/test/index.html的内容;
  5. 5.如果没找到该目录则报错404,如果找到该目录没找到对应的文件则403
3.last请求:
  1. 1.请求linux.rewrite.com/last
  2. 2.匹配 location ~ ^/last 会跳转到 linux.rewrite.com/test
  3. 3.如果找到了,则返回/code/test/index.html的内容;
  4. 4.如果没有找到,会重新对当前server发起请求,这个时候访问地址就变成 linux.rewrite.com/test
  5. 5.重新请求server会匹配到 location /test/ 直接返回该location的内容
  6. 6.如果也没有location匹配,再返回404;
四:测试last和break的区别
1.测试last
  1. [root@lb01 ~]# cd /etc/nginx/conf.d/
  2. 网址配置文件
  3. [root@lb01 conf.d]# vim flag.conf

2.网址测试last
  1. 192.168.15.5/last

3.网址测试break
  1. 192.168.15.5/break

五:redirect和permanent的区别

  • 实战案例
  1. 重定向
  2. server {
  3. server_name _;
  4. listen 80;
  5. location /redirect {
  6. rewrite (.*) http://www.baidu.com redirect;
  7. }
  8. location /permanent {
  9. rewrite (.*) http://www.baidu.com permanent;
  10. }
1.作用
  1. redirect: 每次请求都会询问服务器,如果当服务器不可用时,则会跳转失败。
  2. permanent: 第一次请求会询问,浏览器会记录跳转的地址,第二次则不再询问服务器,直接通过浏览器缓存的地址跳转。

URL Rewrite(四种重定向策略)的更多相关文章

  1. 新浪sae url rewrite(伪静态、重定向)详解

    新浪sae url rewrite(伪静态.重定向)详解 http://www.veryhuo.com phpclubs 2011-11-14 投递稿件 sae全程Sina App Engine,真是 ...

  2. 第十七节: EF的CodeFirst模式的四种初始化策略和通过Migration进行数据的迁移

    一. 四种初始化策略 EF的CodeFirst模式下数据库的初始化有四种策略: 1. CreateDatabaseIfNotExists:EF的默认策略,数据库不存在,生成数据库:一旦model发生变 ...

  3. Java-五种线程池,四种拒绝策略,三种阻塞队列(转)

    Java-五种线程池,四种拒绝策略,三种阻塞队列 三种阻塞队列:    BlockingQueue<Runnable> workQueue = null;    workQueue = n ...

  4. JUC之线程池-三大方法-七大参数-四种拒绝策略

    线程池:重点 三大方法 七大参数 四种拒绝策略 使用池化技术的理由: 我们的程序伴随着创建销毁线程十分浪费资源, 所以使用线程池,先创建线程,随用随取,用完归还 简单来说就是节约了资源. 使用线程池的 ...

  5. Java 线程池四种拒绝策略

    jdk1.5版本新增了 JUC 并发包,其中一个包含线程池. 四种拒绝策略: 拒绝策略类型 说明 1 ThreadPoolExecutor.AbortPolicy 默认拒绝策略,拒绝任务并抛出任务 2 ...

  6. Nginx之rewrite四种flag

    利用nginx的rewrite命令,可以实现URL的重写,可在nginx配置文件的server.location.if部分使用,对于rewrite有四种不同的flag. redirect:返回302临 ...

  7. ThinkPHP中U方法与url的四种访问模式

     ThinkPHP中U方法的用处主要是完成对url地址的组装,在模板中使用U方法而不是固定写死URL地址的好处在于,一旦你的环境变化或者参数设置改变,你不需要更改模板中的任何代码.在模板中的调用格式需 ...

  8. php访问url的四种方式

    1.fopen方式//访问指定URL函数 function access_url($url) { if ($url=='') return false; $fp = fopen($url, 'r')  ...

  9. erlang四种监控策略

    转自:http://jasionq.blog.163.com/blog/static/10970577920133883158424/ Supervisor Behaviour是一个用来实现一个sup ...

随机推荐

  1. uniapp医院预约挂号微信小程序

    开头感言:最近看小程序很火,也想弄一个看看,用了一些时间从0开始写,也记录了一些笔记,自己用框架写的模板,不是很精美,后面会慢慢优化,功能也是后面慢慢加上去的, 其中功能这块,起初只是一些简单的功能, ...

  2. 如何在 Go 中将 []byte 转换为 io.Reader?

    原文链接: 如何在 Go 中将 []byte 转换为 io.Reader? 在 stackoverflow 上看到一个问题,题主进行了一个网络请求,接口返回的是 []byte.如果想要将其转换成 io ...

  3. 一个简单的js时钟

    演示地址 代码 <html> <head> <title> Nonove js clock 时钟 </title> <script type=&q ...

  4. Denoising Diffusion Probabilistic Models (DDPM)

    目录 概 主要内容 Diffusion models reverse process forward process 变分界 损失求解 最后的算法 细节 代码 Ho J., Jain A. and A ...

  5. .net core的Swagger接口文档使用教程(一):Swashbuckle

    现在的开发大部分都是前后端分离的模式了,后端提供接口,前端调用接口.后端提供了接口,需要对接口进行测试,之前都是使用浏览器开发者工具,或者写单元测试,再或者直接使用Postman,但是现在这些都已经o ...

  6. 分区命令(大于2TB的分区)

    注意:parted命令在恢复误删除的分区时候,容易失败的几点: (1)只划分一个分区.恢复失败 (2)划分了2个分区,但是没有格式化.直接删除一个分区,恢复也会失败. (3)做删除操作时候,如果同时删 ...

  7. shell3-循环

    常用的循环语句有3种: <1>for <2>while <3>utile 1.for语句的格式: for 变量名 in 列表: do 循环体 done 如何生成列表 ...

  8. CSS基础 常见的元素显示模式

    1.块级元素 属性:display:block 特点:1.一行只能显示一个元素 2.宽度默认是父元素的,高度是有内容撑开 3.可以设置宽.高常见块元素:div,p,h系列,ul.li,dl.dt.dd ...

  9. Linux中常用的监控性能的命令(sar、mpstat,vmstat, iostat,)详解

    Linux中常用的监控性能的命令有: sar:能查看CPU的平均信息,还能查看指定CPU的信息.与mpstat相比,sar能查看CPU历史信息 mpstat:能查看所有CPU的平均信息,还能查看指定C ...

  10. linux中vim编辑器的翻页命令

    Linux jdk查看文件的最后一行         输入$回车 查看文件的第一行          输入0或者1回车 向前翻页                 Ctrl + f     f为forw ...