如果重写失败,则返回nginx

时间:2014-06-06 19:25:15

标签: nginx url-rewriting

我的文件夹结构:

的/ var / WWW / puenktchenunda /公共/ IMG /受试者

的/ var / WWW / puenktchenunda /公共/ IMG / subjects_min

科目包含" raw"文件。 Subjects_min包含将定期创建的压缩图像。 URL调用将转到主题:

/img/subjects/img1.png

会发生什么:

  1. 重写为臣民_min
  2. 如果/img/subjects_min/img1.png确实存在,请提供
  3. 如果/img/subjects_min/img1.png不存在,请从/img/subjects/img1.png提供图片
  4. 第1步和第2步工作正常。这适用于此位置块:

    location ~* ^.*\/img\/sujets\/.*.(jpg|png|jpeg|gif) {
    
        root /var/www/puenktchenunda/public;
        rewrite /img/sujets/(.*)$ /img/sujets_min/$1;
        #try_files /img/sujets_min/$URI /img/sujet/$URI;
    

    }

    但我不确定如何完成其​​余的工作。有什么想法吗?

    更新

    这是我目前的版本。这工作正常,除了sujets_big位置块。最后有1美元的问题。整个块表达式在$ 1之后添加,而不仅仅是括号中的表达式。

    location ~ /img/sujets/(.*.png)$ {
        root /var/www/puenktchenunda/public/;
        try_files /img/sujets_min/$1 /img/sujets_big/$1;
    }
    
    
    location ~ /img/sujets_big/(.*.png)$ {
        root /var/www/puenktchenunda/public/img/sujets/$1;
    }
    

1 个答案:

答案 0 :(得分:0)

尝试这个逻辑

location ~* ^/img/subjects/([\w\-]+\.(?:jpe?g|png|gif))$ {

    root /var/www/puenktchenunda/public;

    set $imgfilename /img/subjects_min/$1;

    if (-f $document_root$imgfilename) {

        rewrite . $imgfilename break;

    }

}