我们经常在 Nginx 配置中看到一些 if 条件判断,及一些复杂判断语句,类似于
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php;
}
}
这个 if 里面就有个 !-e 判断,这个是什么意思呢?我们来看两种
与文件或目录相关的匹配
模式 1 | 模式 2 | 说明 |
---|---|---|
-f | !-f | 判断路径是否存在且是文件 |
-d | !-d | 判断路径是否存在且是目录 |
-e | !-e | 判断路径是否存在 |
-x | !-x | 判断路径是否存在且可执行 |
与正则表达式相关的匹配
模式 | 说明 |
---|---|
== | 判断是否相等 |
~ | 判断是否匹配,且区分大小写 |
~* | 判断是否匹配,且不区分大小写 |
!~ | 判断是否不匹配,且区分大小写 |
!~* | 判断是否不匹配,且不区分大小写 |
下面我们看个示例
if ( $request_uri ~* /(.*)\.php ) {
return 502;
}
if (!-f $request_filename) {
return 414;
}
第一个 if 是判断是否匹配后面的正则,且不区分大小写
第二个 if 是判断是否存在且为文件
专业提供WordPress主题安装、深度汉化、加速优化等各类网站建设服务,详询在线客服!