nginx 判断访问文件或目录不存在rewrite

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章

nginx 正则及rewrite常用规则实例

nginx rewrite 语法

Nginx架构篇(16)Rewrite - 访问目录URL自动添加“/”

apache与nginx在移动终端访问是的rewrite配置

9. Nginx Rewrite 功能

Nginx配置文件nginx.conf详解