Nginx重写

news/2024/7/19 10:37:46 标签: php, 运维, 爬虫
一、location匹配

1.分类:
(1)正则location:~,~*
(2)普通location:=,^~,@,无
2.匹配规则:
(1) =    精确匹配。如果找到,停止搜索
(2) ^~    普通匹配,匹配路径的前缀,如果找到,停止搜索,不继续匹配正则
(3) ~    正则匹配,区分大小写
(4) ~*    正则匹配,不区分大小写
(5) !~    正则不匹配,不区分大小写
(6) !~* 正则不匹配,区分大小写
(7) /      通用匹配,任何请求都会匹配到
(8) @     命名location,内部重定向
3.匹配顺序:
(1)进行精确匹配(=),如果匹配上,停止搜索。否则继续下一步;
(2)进行普通匹配,如果找到完整匹配路径停止搜索。否则继续下一步;
(3)匹配最大前缀,如果它带有^~,停止搜索,否则记录这个最大前缀匹配,继续下一步;
(4)进行正则匹配(~和~*),按顺序逐个匹配,如果匹配上,停止搜索,否则使用上一步记录的最大前缀匹配。
4.优先级:
(location =) > (location 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 最大前缀匹配路径) > (/)
二、目录/文件判断

1.-f和!-f用来判断是否存在文件
2.-d和!-d用来判断是否存在目录
3.-e和!-e用来判断是否存在文件或目录
4.-x和!-x用来判断文件是否可执行
三、指令

1.location 指令
语法:location [=|~|~*|^~|@] URI {}
作用域:server
为匹配的URI进行配置,URI可以是字符串或正则表达式
示例:

location ~ .*\.(gif|jpg|jpeg|png)$
{
    expires 30d;
}

2.if 指令
语法:if (){}
作用域:server,location
检查一个条件是否符合,如果条件符合,则执行大括号内的语句。不支持嵌套和多个条件&&或||处理
示例:

if ( !-e $request_filename )
{
    rewrite  ^/(.*)$ index.php last;
}

3.try_files 指令
语法:try_files file1 [file2 ... filen] URI 或 try_files file1 [file2 ... filen] =code
作用域:server location
按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。
注意,只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误。
命名的location也可以使用在最后一个参数中。与rewrite指令不同,如果回退URI不是命名的location那么
$args不会自动保留,如果你想保留$args,则必须明确声明 示例: try_files $uri $uri/ /index.php?$args; try_files $uri =404; 4.set 指令 语法:set variable value; 作用域:server,location,if 定义一个变量,并给变量赋值。变量的值可以为文本、变量以及文本变量的联合 示例: set $a "hello world"; 5.break 指令 语法:break; 作用域:server,location,if 完成当前的规则集,不再处理rewrite指令 示例: location ~ ^/(cron|templates)/ { deny all; break; } 6.return 指令 语法:return code; 作用域:server,location,if 结束执行并返回状态码给客户端。 示例:如果访问的URI以".sh"或".bash"结尾,则返回403状态码 location ~ .*\.(sh|flv|mp3)$ { return 403; } 7.rewrite 指令 语法:rewrite regex replacement flag; 作用域:server,location,if 根据表达式来重定向URI,或者修改字符串。指令根据配置文件中的顺序来执行。注意,重写表达式只对相对路径有效 示例: if( $host ~* www\.(.*) ) { set $domain $1; rewrite ^(.*)$ http://$domain$1 permanent; } rewrite的flag标记: last 将rewrite后的地址重新在server标签执行,地址栏url不变。超过10次匹配不到报500错误。使用alias指令必须用last标记 break 直接使用当前资源,不再执行location里余下的语句,完成本次请求,地址栏url不变 redirect 返回302临时重定向,地址栏显示重定向后的url,爬虫不会更新url permanent 返回301永久重定向,地址栏显示重定向后的url,爬虫更新url,对搜索引擎友好

 


http://www.niftyadmin.cn/n/545825.html

相关文章

树莓派3 U盘启动 配置 即 MSD启动 总结

树莓派3添加了一个新特性:允许USB启动。现在我们既可以从SD卡启动,也可以从USB启动。USB设备可以是U盘,带USB适配器的SSD硬盘,甚至是移动硬盘。本文介绍怎么从U盘启动树莓派3。1、安装 Raspbian首先在SD卡中安装最新的Raspbian&am…

指针进阶之字符指针

目录 一,基础用法 二,进阶用法 2.1字符指针存放字符串 2.2数组存放字符串 一,基础用法 简单来说,指针就是地址。而当我们将其解引用之后,它将会根据地址找到那个地址存放的内容,再对其进行后续操作。 …

WinForm系统 -- 进度条加载

继续更博: 登录主窗体加载 进度条 通过线程异步加载进度条窗体,实现异步加载过程 转载于:https://www.cnblogs.com/Raymond-YYC/archive/2012/11/06/2757718.html

Bootstrap组件之输入框组

.input-group——设置div为输入框组; .input-group-lg、.input-group-sm、.input-group-xs——改变输入框组的尺寸; .input-group-addon——在输入框前或后加入额外内容; .input-group-btn——在输入框前或后加入button或button式下拉菜单组件…

字符串左旋?你,值得拥有

目录 移首补尾法 双倍字符串法 逆置法 我们首先想到的应该是这样子一个例子:字符串移动位置,那不就是数一串珠子吗,数一个,所有的珠子位置往后挪动一位。那到底是不是这样呢?本文将会为你答疑解惑。 移首补尾法 首先…

webrtc学习: 部署stun和turn服务器

webrtc的P2P穿透部分是由libjingle实现的. 步骤顺序大概是这样的: 1. 尝试直连. 2. 通过stun服务器进行穿透 3. 无法穿透则通过turn服务器中转. stun 服务器比较简单. 网上也有很多公开的stun服务器可以用于测试. 例如 stun.ideasip.com 这里需要注意一下. 我在做Android应用…

hrbust 基础数据结构——单链表(1)

Description 输入n个整数,先按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据m,将单链表中的值为m的结点全部删除。分别输出建立的初始单链表和完成删除后的单链表。 Input 第一行输入数据个数n; 第二行依次输入n个整数&#xff1…

指针数组与数组指针 — 不是twins的twins

目录 一,指针数组 1.1指针数组基本知识 1.2指针数组实用案例分析 二,数组指针 1.1数组指针基本知识 2.2数组指针应用例子 2.2.1反面例子 2.2.2正确例子 如题目所示,今天我们将认识的是一对像双胞胎但却不是双胞胎的指针内容。 一&…