首页 > 代码库 > nginx 判断访问文件或目录不存在rewrite
nginx 判断访问文件或目录不存在rewrite
文件及目录匹配,其中:
* -f和!-f用来判断是否存在文件
* -d和!-d用来判断是否存在目录
* -e和!-e用来判断是否存在文件或目录
* -x和!-x用来判断文件是否可执行
样例 : 判断访问的图片是否存在,不存在跳转到另外的域名
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|thumb) { root /data/wwwroot/bbs.xxx.com; expires 10d; if (!-e $request_filename) { rewrite ^/data/attachment/forum/(.*)$ http://img.xxx.com/forum/$1 permanent; } }
这里会遇到一个问题:
nginx中重写rewrite的语法错误[emerg] unknown directive “if($host!=”
Nginx语法检测特别严格,if和后面括号以及变量等号这些元素都要有空格,所以正确的写法是:
if ( $host != ‘www.0xcafebaby.com‘ ){ rewrite ^(.*)$ http://www.0xcafebaby.com$1 permanent; }
用^代替空格看起来更清晰:
if^(^$host^!=^‘www.0xcafebaby.com‘^){
反正多打几个空格就是了,所以nginx中的中文配置文件解释可参考:Nginx配置文件中文注释详解 如果想了解更多nginx的rewrite配置,可参考:nginx rewrite 的 参数大全
nginx 判断访问文件或目录不存在rewrite
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。