当前位置: 首页 > news >正文

重定向及基础实验

1.if指令

if (判断条件){

执行语句;

}

if的正则表达式

= #比较变量和字符串是否相等,相等时if指令认为该条件为true,反之为false
!=  #比较变量和字符串是否不相等,不相等时if指令认为条件为true,反之为false
~ #区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假
!~ #区分大小写字符,判断是否匹配,不满足匹配条件为真,满足匹配条件为假

~* #不区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假
!~* #不区分大小字符,判断是否匹配,满足匹配条件为假,不满足匹配条件为真


-f 和 !-f #判断请求的文件是否存在和是否不存在
-d 和 !-d #判断请求的目录是否存在和是否不存在
-x 和 !-x #判断文件是否可执行和是否不可执行
-e 和 !-e #判断请求的文件或目录是否存在和是否不存在(包括文件,目录,软链接)

实例

location /main {index index.html;default_type text/html;if ( $scheme = http ){echo "if-----> $scheme";}if ( $scheme = https ){echo "if ----> $scheme";}

结果为,当我们使用http来访问此站点时。那么,会回复“if------>http”;当我们使用https来访问此站点时。那么,会回复“if------>https”。

server {listen 80;server_name www.kgc.com;root /usr/local/nginx/html/;location / {root /data/nginx/pc/;}location /test {default_type text/plain;return  301 https://www.baidu.com;}location /main {index index.html;default_type text/html;if ( $scheme = http ){return 666 "if-----> $scheme";}}#if (!-e $request_filename){#return 200 "$request_filename\n";#return 302 /index.html;#}
}

访问192.168.174.104/main得到的结果:

这时,我们将最后四个注释删掉,再次访问192.168.174.104/main得到的结果:

返回主站点。

或者

可以得到我们访问文件的路径

2.return

return用于完成对请求的处理,并直接向客户端返回响应状态码,比如:可以指定重定向URL(对于特殊重定向状态码,301/302等) 或者是指定提示文本内容(对于特殊状态码403/500等),处于此指令后的所有配置都将不被执行,return可以在server、if 和 location块进行配置。

  location /main {index index.html;default_type text/html;#if ( $scheme = http ){return 666 "if-----> $scheme";#}}

访问结果:

日志文件:

实际应用

server {listen 80;server_name www.kgc.com;root /usr/local/nginx/html/;location /test {default_type text/plain;return  301 https://www.baidu.com;}location /main {index index.html;default_type text/html;if ( $scheme = http ){return 666 "if-----> $scheme";}}if (!-e $request_filename){#return 200 "$request_filename\n";return 302 /index.html;}
}

我们来依次翻译每一段字符的含义:

server {:定义虚拟主机,我们可以使用他来运行多个网站。

listen 80:监听在本机的80端口上。

server_name www.kgc.com:定义的域名为www.kgc.com。

root /usr/local/nginx/html/:默认的主站点所在的目录。

location /test{:如果url为test就执行括号的指令或者文件。

default_type text/plain:默认为纯文本格式。

return  301 https://www.baidu.com:输出状态码为301(永久重定向),将访问到百度。

}:location的后括号。

location /main {:另一个locatio,如果url为/main,则访问此location下。

index index.html:访问index.html文件。

default_type text/html:默认为纯文本格式。

if ( $scheme = http ){:if判断,如果判断成立,则会执行下面的语句。

return 666 "if-----> $scheme":输出状态码为666(无特殊含义),输出内容为“if----->协议”

}:if的后括号

}:location的后括号

if (!-e $request_filename){:if判断,如果判断成立,则会执行下面的语句。

#return 200 "$request_filename\n":被注释掉的代码,本来的意思为输出当前请求文件的路径,并在结尾加上换行符。

return 302 /index.html:输出状态码为302(即临时重定向),将url变为/index.html来重新匹配。

}:if的后括号

}:server的后括号
 

访问结果

192.168.174.104/test:已经有了缓存

由于没有访问mian的路径,会直接跳转到主站点

将最后的if判断注释掉

相关文章:

  • Python变量作用域
  • [学习]RTKLib详解:ephemeris.c与rinex.c
  • 如何修复WordPress数据库
  • Vscode (Windows端)免密登录linux集群服务器
  • Linux中的防火墙
  • 【Linux学习笔记】基础IO之理解文件
  • 学成在线之缓存
  • 【金仓数据库征文】金仓数据库 KES:MySQL 迁移实用指南
  • 服务器数据恢复—Linux操作系统服务器意外断电导致部分文件丢失的数据恢复
  • 《运维那些事儿》专栏总目录(持续更新)
  • 如何解决 Linux 系统文件描述符耗尽的问题
  • vue2 结合后端预览pdf 跨域的话就得需要后端来返回 然后前端呈现
  • vue中scss使用js的变量
  • uniapp上架苹果APP Store踩雷和部分流程注意事项(非完整流程)
  • uniapp|实现多终端聊天对话组件、表情选择、消息发送
  • CSS3 过渡与动画
  • XML简单介绍
  • 2.2 点云数据存储格式——通用型点云存储格式
  • DUNE 开源项目介绍与使用指南
  • 2025年Java基础知识总结难点亮点(超详细整理)
  • 泽连斯基称与特朗普通话讨论停火事宜
  • 汪明荃,今生不负你
  • 大风暴雨致湖南岳阳县6户房屋倒塌、100多户受损
  • 深入贯彻中央八项规定精神学习教育中央第一指导组指导督导河北省见面会召开
  • 化学家、台湾地区“中研院”原学术副院长陈长谦逝世
  • 抗战回望21︱《“良民”日记》:一个“良民”在沦陷区的见闻与感受