URL重写

摘抄了了张宴一本书上的URL重写规则,算是复习一下吧;

nginx URL 重写
1,ngin中的URL 重写主要是使用perl的正则表达式,这也是为什么安装Nginx的时候,要制定PCRE的原因。
2,Nginx Rewrite 规则相关指令
Nginx 重写规则的主要指令是if ,rewrite,set,return break 等,而rewrite是最重要的指令,
例:

rewirte ^/b/(.*)\.html /play.php?video=$1 break;


可以这样子理解上面的例子:


指令      匹配规则          动作
rewirte   ^/b/(.*)\.html   /play.php?video=$1 break;  ;是Nginx 默认的结尾符号
上面的重写规则 匹配开头 /b/目录下任何html 请求 重写到对应的 /play.php?video=html名称 break;


另外一个例子 IF
if (!-f $request_filename)
	{
	rewrite ^/img/(.*)$ /site/$host/images/$1 last;
	}


其中 $request_filename $host为内置变量  $1 是前面()内的配置 后向引用


2.1 break 指令
语法 break
使用环境:server,location,if
该命令作用是完成当前规则集,不再处理后面的rewrite指令
例:
if ($slow) {
	limit_rate 10k;
	break;
	}

2.2 if
语法 if (condition) {........}
使用环境 server,location
该指令用于检查一个条件是否符合,如果条件符合,则执行大括号内的语句。if指令不支持嵌套
,不支持多个条件&&和||处理。
以下信息可以指定为条件:
1,变量名,错误的值包括:空字符串“”,或者任何以0开始的字符串;
2,变量比较可以使用“=” != 运算符;
3,正则表达式模式匹配可以使用 ~*(不区分大小写) ~ (区分大小写)
4,!取反操作符,如 !~ !~* 
5,-f !-f 判断文件是否存在
6,-d !-d判断文件或目录是否存在
7,-x !-x来判断文件是否可执行
放在()内的正则表达式 可以使用$1至$9 引用
例:
if ($http_user_agent ~ MSIE) {
	rewrite ^(.*)$ /msie/$1 break;
	}


if ($htto_cookie ~* "id=([^;] +)(?:;|$)") {
	set $id $1;
	}


if ($request_method = POST) {
	return 405;
	}


if (!-f $request_filename) {
	break;
	proxy_pass http://127.0.0.1;
	}
	
if ($slow) {
	limit_rate 10k;
	break;
	}
	
if ($invalid_referer) {
	return 403;
	}
	
if ($args ^~ post=140) {
	rewrite ^ http://example.com/permanent;
	}



3 return 
语法:return code
使用环境: server,location,if

location ~ .*\.(sh|bash)?$
	{
	return 403;
	}


2.4 rewrite 
语法 rewrit regex replancement flag
使用环境: server,location,if
该指令根据表达式来重定向URL或者修改字符串,指令根据配置文件中的顺序来执行。
重写表达式只对相对路径有效,
其中flag 标记指的是last break redirect permanent
区别如下:
last 相当于apache里面的[L] 标记,表示完成rewrite;
break 本条规则匹配完成后,终止匹配,不再匹配后面的规则;
redirect 返回302临时重定向,浏览器地址栏会显示跳转后的URL地址
permanent 返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
2.5set 指令
语法: set variable valus
使用环境: server,location,if
该指令用于定义一个变量,并给变量赋值,变量的值可以为文本,变量及文本变量的联合
实例如下:
set $varname 'hello'

内容概要:本文深入探讨了多种高级格兰杰因果检验方法,包括非线性格兰杰因果检验、分位数格兰杰因果检验、混频格兰杰因果检验以及频域因果检验。每种方法都有其独特之处,适用于不同类型的时间序列数据。非线性格兰杰因果检验分为非参数方法、双变量和多元检验,能够在不假设数据分布的情况下处理复杂的关系。分位数格兰杰因果检验则关注不同分位数下的因果关系,尤其适合经济数据的研究。混频格兰杰因果检验解决了不同频率数据之间的因果关系分析问题,而频域因果检验则专注于不同频率成分下的因果关系。文中还提供了具体的Python和R代码示例,帮助读者理解和应用这些方法。 适合人群:从事时间序列分析、经济学、金融学等领域研究的专业人士,尤其是对非线性因果关系感兴趣的学者和技术人员。 使用场景及目标:①研究复杂非线性时间序列数据中的因果关系;②分析不同分位数下的经济变量因果关系;③处理不同频率数据的因果关系;④识别特定频率成分下的因果关系。通过这些方法,研究人员可以获得更全面、细致的因果关系洞察。 阅读建议:由于涉及较多数学公式和编程代码,建议读者具备一定的统计学和编程基础,特别是对时间序列分析有一定了解。同时,建议结合具体案例进行实践操作,以便更好地掌握这些方法的实际应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值