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 ...
随机推荐
- Ubuntu命令:sudo、shutdown、apt-get、vim
切换成ROOT用户: Ubuntu中默认不开启root账户,所以root账户是没有密码的, 但是会有一个非root的管理员账户,可以通过sudo来获得root权限,现在就可以用这个账户来设置密码 ** ...
- (一)java概述
1.Java1995年斯坦福大学网络公司推出的一门高级语言.一种面向网络,完全的面向对象,完全可靠跨平台的语言. java:一种面向对象的高级语言 将现实生活中的事物以及 ...
- WCF 配置文件
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.S ...
- admins.py总结比较,转
转:http://blog.csdn.net/pipisorry/article/details/46764495
- Markdown编辑器推荐与语法教程--展示版
---恢复内容开始--- 前言 作为一名高级码农,怎能不知道Markdown的正确打开方式,Markdown现在可以说是无处不在,如果你还不知道简书中的代码块是怎么写出来的,小白无疑了.在此特别推荐一 ...
- 关联数组的错误,mysql insert varchar 原生的错误
在写代码的时候,没注意犯了2个低级错误: 关联数组的错误 $array = ['id' => '03657', 'kf_phone ' => 18796442]; 然后你再读取的时候就需要 ...
- php end()
end()的用法
- shell编程中变量的运算 (shell 06)
主要包括以下3种 字符串操作数学运算浮点运算 一.字符串操作 字符串的连接 连接字2个字符串不需要任何连接符,挨着写即可 长度获取 expr length "hello" expr ...
- jmeter 打不开 提示“Not able to find Java executable or version”的解决办法
Not able to find Java executable or version. Please check your Java installation . errorlevel=2Not a ...
- 使用wireshark观察SSL/TLS握手过程--双向认证/单向认证
SSL/TLS握手过程可以分成两种类型: 1)SSL/TLS 双向认证,就是双方都会互相认证,也就是两者之间将会交换证书.2)SSL/TLS 单向认证,客户端会认证服务器端身份,而服务器端不会去对客户 ...