如果文件存在,则nginx重写

时间:2017-03-11 14:35:37

标签: php nginx

我的脚本修改图像并返回结果。

我想只在图像存在的情况下处理它。

但是下面的块不起作用,nginx只返回原始图像。

location ~* \.(jpg|jpeg|png)$ {
    if (-f $uri) {
        rewrite (.*) /imagemagic.php?src=$1 last;
    }
}

我最初在脚本中使用了这个来检查,但是我不喜欢它坐在脚本文件中......

if (!file_exists($_GET['src'])) {
    http_response_code(404);
    exit();
}

我应该如何使用nginx设置执行此操作?感谢。

1 个答案:

答案 0 :(得分:3)

-f运算符需要路径名,使用$document_root$request_filename

例如:

if ( -f $document_root$uri ) { ... }

或者:

if ( -f $request_filename ) { ... }

有关详细信息,请参阅this document