我们经常在 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主题安装、深度汉化、加速优化等各类网站建设服务,详询在线客服!
