Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 如何阻止nginx认为图像URL是实际文件?_Http_Url_Nginx - Fatal编程技术网

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

Http 如何阻止nginx认为图像URL是实际文件?,http,url,nginx,Http,Url,Nginx,为这个糟糕的标题感到抱歉;这很难解释 我的网站内置了一个搜索功能,如下所示: http://www.example.com/search/queryhere 问题是,当我尝试搜索文件名时,例如: http://www.example.com/search/hello.jpg 我得到了一个nginx404页面,大概是因为search/hello.jpg正在试图打开。一个解决方法是在请求路径中添加一个正斜杠,但我想要一个更持久的解决方案。我该如何解决这个问题 location ~* \.

为这个糟糕的标题感到抱歉;这很难解释

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

http://www.example.com/search/queryhere
问题是,当我尝试搜索文件名时,例如:

http://www.example.com/search/hello.jpg
我得到了一个nginx404页面,大概是因为
search/hello.jpg
正在试图打开。一个解决方法是在请求路径中添加一个正斜杠,但我想要一个更持久的解决方案。我该如何解决这个问题

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

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

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
  if (-f $request_filename) {
    expires max;
    log_not_found off;
    access_log off;
  }
}
如果,也许有一种更好的方法不需要

:

使用
if
来确保文件存在是可怕的。这很卑鄙。如果您有任何最新版本的Nginx,您应该看看
try_files
,它让您的生活更加轻松


显示您的nginx配置please@Alp在问题中增加了相关部分