07-Location之正则匹配
大网站专门有自己的图片服务器,起码也得单独放一个目录里面。
淘宝网有些图片开启了防盗链(即使是小图片,也不让你下载,真小气)。163新闻可以下载。

用正则匹配uri中的image,就是说你的uri中到底有无image。

为什么是404呢?

因为你访问的是index.html,它的根目录root是/usr/local/nginx/html/。/usr/local/nginx/html/下面哪来的image目录和logo.jpeg啊。



由于image目录是和index.html都在html目录下,所以图片得以显示出来。

动静分离:把静态的js、css和图片分离出去吗?分到别的目录甚至的别的服务器。你会说没有任何难度啊。image的地址的uri左边不就是一个斜线吗?
访问图片地址的时候,找到了这张图片,找到了就说明它来到了html目录下,来到了html目录下就证明location段生效了。这个location段为什么生效了?因为这个image地址的uri左边不就是一个斜线吗?那不就匹配上了吗?但是它匹配的非常的短,只匹配了一条斜线。

单纯只讨论正则。你要是遇上image单独拿出来说话。单独讨论正则。

普通的一条斜线可以匹配uri:http://192.168.118.128/image/logo.jpeg,正则也可以匹配uri:http://192.168.118.128/image/logo.jpeg,这个时候它俩谁发生作用?精准和普通匹配冲突的时候,是精准匹配先发挥作用。
现在,又多了一个正则和普通的做匹配,也冲突了,此时谁发挥作用?


如果你用~号指定了正则,它就会再用正则去匹配,前面已经匹配过了后面有正则表达式还拿正则表达式去匹配干嘛?这就说明正则表达式要是能匹配成功肯定要覆盖前面的成果。否则如果你不覆盖你还费这个劲干嘛。普通就是不用正则也不用精准的那个匹配,它匹配最长的而且是记住那个结果,然后是正则表达式开始检查。按照正则表达式的顺序开始检查,一旦要是检查到了哪个正则表达式能匹配立即就结束了,而且这个选项就要被用上。
按理说这个正则表达式要发挥作用啊



正则是从开头到结尾啊还是说半道上有个image就行啊。虽然说是404,但是你是从哪个目录上去找图片的这个得搞清楚。看看错误日志

正则已经匹配成功了,别以为是404就是一样的,其实是错误的情况有很多种。已经到了/var/www/image/目录下去找了,只不过多了image而已。
修改:

成功了!
正则表达式把上一个location的功能给覆盖了。其实第一个location寻找了也发挥作用了。但是单对于image而言又做了特殊处理。对于image这一块,我有我自己的正则语法,匹配到/var/www/(不是/var/www/image/)目录下,所以发挥了作用。





注意要使匹配生效,必须得/var/www/html/foo/目录存在并且目录下有索引文件才能生效啊,不然匹配完成一样会报404错误。不是可以匹配就一定会有效果。


07-Location之正则匹配的更多相关文章
- 07 nginx Location之正则匹配
一:Location之正则匹配 再来看,正则也来参与. location / { root /usr/local/nginx/html; index index.html index.htm; ...
- Nginx 笔记与总结(7)Location:正则匹配
在 /usr/local/nginx/conf/nginx.conf 的默认 server 段中,保留默认的 location 信息(之前测试的 location 配置删除): location / ...
- Nginx 笔记与总结(6)Location:精准匹配
在 /usr/local/nginx/conf/nginx.conf 的 server 段中,location 表示根据 URI 来进行不同的定位:把网站的不同部分定位到不同的处理方式上,例如遇到 . ...
- nginx location 正则匹配
nginx 统计语句1.根据访问IP统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l2.统计访问URL统计PV awk '{print $7 ...
- shell grep正则匹配汉字
Shell grep正则匹配中文 测试文本 demo_exe.c,内容如下,需要注意保存的编码格式,对输出到终端有影响: 我们中文操作系统ASNI默认是GBK的. #include<stdio. ...
- 详解一个自己原创的正则匹配IP的表达式
这里给大家详细讲解一下一个匹配IP地址的正则表达式, 有关正则方面的知识,会在详细的讲解中提到. 在讲解之前,我先给大家介绍一下,ip地址的生成规则. IP地址,是由32位数字二进制转为四个十进制的字 ...
- Aho-Corasick算法、多模正则匹配、Snort入门学习
希望解决的问题 . 在一些高流量.高IO的WAF中,是如何对规则库(POST.GET)中的字符串进行多正则匹配的,是单条轮询执行,还是多模式并发执行 . Snort是怎么组织.匹配高达上千条的正则规则 ...
- iOS 中的正则匹配(工具类方法)
正则表达式 正则表达式是对字符串操作的一种逻辑公式, 用事先定义好的一些特定字符.及这些特定字符的组合, 组成一个"规则字符串", 这个"规则字符串"用来表达对 ...
- js:通过正则匹配获取页面的url中的参数
简介:获取页面参数 原生js: //通过正则匹配获取当前页面的url中的参数 function getUrlParam(name){ var reg = new RegExp("(^|&am ...
- 正则匹配ts的引用
ts文件引入代码如下: import { IView, GridView, Sizing as GridViewSizing, Box, IGridViewStyles } from './gridv ...
随机推荐
- 原生js面向对象写法
Mouse就是一个类,有自己的成员变量和成员方法,成员方法一定加上prototype,避免js原型的坑. var Mouse = function(id) { this.id = id; this.n ...
- mysql-jdbc创建Statement与执行SQL
使用JDBC创建Connection后,执行SQL需要先创建Statement Statement stmt = connection.createStatement(); 创建代码如下 public ...
- 洛谷P1306 斐波那契公约数
题目描述 对于Fibonacci数列:1,1,2,3,5,8,13......大家应该很熟悉吧~~~但是现在有一个很“简单”问题:第n项和第m项的最大公约数是多少? 输入输出格式 输入格式: 两个正整 ...
- rabbitmq java
package com.enniu.rabbitmq; import com.rabbitmq.client.AMQP; import com.rabbitmq.client.AMQP.BasicPr ...
- c#同步調用異步(async)方法【記錄用】
使用RestSharp中的異步方法ExecuteTaskAsync<T>編寫寫了一個異步方法,功能很簡單:異步調用API,返回結果,假設為GetAccessToken,方法簽名假設如下: ...
- numpy之通用函数ufunc
通用函数-元素级数组函数 通用函数(ufunc)是一种对ndarray执行元素级运算的函数. 一元ufunc import numpy as np arr = np.arange(-10,10,2) ...
- mysql中修改密码的方式
参考地址:https://www.cnblogs.com/yang82/p/7794712.html mysql中修改用户密码的方式: 最简单的方法就是借助第三方工具Navicat for MySQL ...
- Android的移动存储解决方案之SharedPreferences
搞Android有一段时间了,但是并没写过有关Android的博客,今天给大家介绍一下SharedPreferences. 使用SharedPreferences保存key-value对的步骤如 ...
- simple_one_for_one 和 one_for_one的区别
参考这里http://blog.sina.com.cn/s/blog_77cb45a70102v1ja.html 用起来最直观的不同点 simple_one_for_one需要手工start_chil ...
- 【转】Pro Android学习笔记(九八):BroadcastReceiver(2):接收器触发通知
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.sina.com.cn/flowingflying或作者@恺风Wei-傻瓜与非傻瓜 广播接 ...