我有一个例子网络服务器只有一个index.html文件在www目录。我可以设置一个nginx与以下配置:
location /subfolder {
alias /data/www;
try_files $uri $uri/ /index.html;
}
在浏览器中,我可以在本地域test.local/subfolder
上看到正确的响应,也test.local/subfolder/something
返回默认的nginx页面(这是正常的,因为根没有设置)
如果我将配置更改为
location /subfolder {
alias /data/www;
try_files $uri $uri/ /index.html =404;
}
对test.local/subfolder
的响应仍然正确,但是test.local/subfolder/something
和 /subfolder前缀的所有URI返回index.html正确的响应状态也是200不是404。如果我删除/index
从try_files我得到相同的结果
我想知道nginx如何处理请求=404回退,但找不到任何信息,甚至在官方文档中也没有。
UDAPTE:
我发现alias指令应该以/
结尾,但仍然无法获得a=404的功能和用途,因为状态仍然是200ok
您应该定义服务器的根,然后是默认索引,然后将=404
添加到try_files
:
server {
server_name example.com;
root /var/www/html/example.com;
index index.html index.htm index.php;
# This is optional - if you want a customized 404 error page
error_page 404 /404.html;
location /subfolder {
try_files $uri $uri/ =404;
}
}
root
和alias
之间的区别在于root
附加location
以获取文件系统中的绝对路径,而alias
排除location
。例如,当您尝试获取http://example.com/subfolder/filename.txt
server_name example.com;
root /var/www/html/example;
location /subfolder {
try_files $uri $uri/ =404;
}
将返回/var/www/html/example/subfolder/filename的内容。txt
(如果存在)而
server_name example.com;
location /subfolder {
alias /var/log;
try_files $uri $uri/ =404;
}
将返回/var/log/filename的内容。txt
(如果存在)
try\u files
指令仅支持以下语法:
try_files file ... uri;
try_files file ... =code;
它不支持:
try_files file ... uri =code;
这里的file
和uri
之间的区别在于,对于file
参数,NGINX将在继续下一个参数之前检查它们是否存在;对于uri
,它不会。
如果最后一个参数的形式为=code
,那么它前面的所有参数都是文件
s(检查是否存在)。
由此,您可以得出结论,使用请求URI/foo/bar
和此配置:
root /var/www;
location /foo/ {
try_files $uri $uri/ =404;
}
... 如果存在任何文件
s,则不会触发404错误:
/var/www/foo/bar
/var/www/foo/bar/
目录(如果启用了autoindex
)/var/www/foo/bar/index.html
(或index.php
等)(由于index
的值)只有当以上都不存在时,NGINX才会触发404错误。
本文向大家介绍如何在JDBC中使用try-with-resources?,包括了如何在JDBC中使用try-with-resources?的使用技巧和注意事项,需要的朋友参考一下 每当我们实例化并使用某些对象/资源时,都应显式关闭它们,否则有可能发生资源泄漏。 通常,我们使用finally资源使用close资源作为- 从JSE7开始,引入了try-with-resources语句。在这种情况下,我
问题内容: 我有一种使用JDBC从数据库中获取用户的方法: 我应该如何使用来改进此代码? 我已经尝试使用下面的代码,但是它使用了很多块,并且并没有太大地提高可读性。我应该以其他方式使用吗? 问题答案: 在你的示例中,无需进行外部尝试,因此你至少可以从3降为2,并且也不需要在资源列表的末尾关闭。使用两个try块的优点是所有代码都在前面显示,因此你不必引用单独的方法:
我试图发送一个体在后请求在一个springboot应用程序使用Rest模板。这里是控制器:(我删除了,因为我使用了头) 我想发送对象(lang,key和text)作为帖子请求中的正文,以获得mcResent: 公共mc响应parseTheSentiments(字符串文本,语言lang,字符串键)抛出异常{ } 但是,我得到了以下错误:404null。 你能帮帮我吗?提前感谢,以下是服务等级:
问题内容: 我有一个档案 用户来 我希望用户的浏览器开始下载文件。我怎么做?readfile是否在服务器上打开文件,这似乎是不必要的事情。有没有一种方法可以在不打开服务器的情况下返回文件? 问题答案: 我想你想要这个:
本文向大家介绍如何在PHP中回显XML文件,包括了如何在PHP中回显XML文件的使用技巧和注意事项,需要的朋友参考一下 在PHP包装程序的帮助下,HTTP URL可以像本地文件一样使用。可以通过file_get_contents()来获取URL中的内容,并且可以将其回显。或使用readfile函数读取。 以下是执行相同操作的示例代码- 下面展示了一个替代方案- 也可以使用asXML方法。以下是示例