如何阻止nginx认为图像URL是实际文件?

时间:2013-12-11 21:13:39

标签: http url nginx

抱歉可怕的头衔;很难解释

我的网站内置了一个搜索功能,使用如下:

http://www.example.com/search/queryhere

问题在于,当我尝试搜索文件名时,例如:

http://www.example.com/search/hello.jpg

我得到一个nginx 404页面,据说因为search/hello.jpg正在尝试打开。解决方法是在请求路径中添加正斜杠,但我想要一个更永久的解决方案。我该如何解决这个问题?

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
            expires max;
            log_not_found off;
            access_log off;
    }

1 个答案:

答案 0 :(得分:1)

告诉nginx只对现有文件执行额外指令:

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
  if (-f $request_filename) {
    expires max;
    log_not_found off;
    access_log off;
  }
}

也许有一种更好的方法,不需要if ......

According to nginx pitfalls

  

使用if确保文件存在非常糟糕。这是意思。如果你有任何最新版本的Nginx,你应该看看try_files这让生活变得更轻松。