由于某种原因,页面正在转发到nginx
服务的404页面。除此页面外,该站点正在运行。在我的目标网页上,标题中包含以下内容:
<meta http-equiv="refresh" content="5;URL=/second">
即使硬编码http://mydomain.local/second
也提供相同的404。
这是Sinatra
部署。
get "/second" do
@title = "my Title"
erb :index
end
我在想,也许我在locations
中的nginx.conf
指令有点麻烦:
location / {
autoindex off;
try_files $uri $uri/ $uri/$request =404;
index /;
}
任何人都知道为什么Sinatra
不会捕获路由而只提供文件吗?干杯。
答案 0 :(得分:0)
让我们分解一下:
autoindex off;
您无需指定此选项,默认情况下它处于关闭状态。
try_files $uri $uri/ $uri/$request =404;
尝试并按此顺序将请求与文件匹配,以匹配的第一个为准。如果不匹配,则返回404。您的请求是http://mydomain.local/second
,因此您要告诉Nginx寻找:
index指令告诉Nginx如何处理以斜杠结尾的请求,通常您可以指定项目中可能是索引文件的文件,例如index.php,index.html等。您实际上并没有使用此文件,并且{ {1}},因为它们具有相似的目的。
同样值得注意的是,Nginx在没有请求且不以文件扩展名结尾的任何请求中添加尾部斜杠,因此try_files
可能需要更改为{{ 1}},因为我怀疑Sinatra会看到没有附加斜杠的请求