我知道有很多类似的职位在那里,但仍然找不到一个适合我的情况。
我有一个非常简单的位置块,它提供静态HTML文件,但它提供404不是我指定的文件。
location / {
if ($request_uri != /abcd) {
return 500;
}
root /usr/share/nginx/html;
#try_files $uri.html =404;
#try_files index2.html =404;
try_files $uri $uri/ =404;
}
字符串
这是根目录中ls的输出
50x.html abcd.html index.html index2.html
型
正如你所看到的,有abcd.html和index2.html,但当我设置文件名时,它无法访问并显示404页面。
只有$uri.html
可以被解析并显示正确的页面。如果我想为该位置提供静态文件,我应该怎么做?
例如,我想为请求/abcd
提供abcd.html
,并为其他请求返回500。
1条答案
按热度按时间xqnpmsa81#
所有Nginx URI都包含一个前导
/
。try_files
指令的 file 参数需要一个前导/
来匹配指定的路径。参见try_files
手册页。$uri
变量已经包含一个前导/
。于是:
try_files $uri.html =404;
匹配文件,因为$uri.html
==/abcd.html
try_files index2.html =404;
与文件不匹配,因为缺少前导/
try_files $uri $uri/ =404;
与文件不匹配,因为没有名为abcd
的文件举例来说:
字符串
假设
index2.html
始终存在,则=404
永远不会到达。