我试图在NGINX中提供一些静态html文件,文件夹和文件命名约定如下。
/root/level-1/
/root/level-1a/
/root/level-1b/
/root/level-1.html
/root/level-1a.html
/root/level-1b.html
/root/level-1/foo.html
/root/level-1a/foo.html
/root/level-1b/foo.html
/root/level-1/level-2/
/root/level-1/level-2a/
/root/level-1/level-2b/
/root/level-1/level-2.html
/root/level-1/level-2a.html
/root/level-1/level-2b.html
/root/level-1/level-2/foo.html
/root/level-1/level-2a/foo.html
/root/level-1/level-2b/foo.html
我的html中的所有路径看起来都像这样。
<a href="/root/level-1">
<a href="/root/level-1a">
<a href="/root/level-1b">
<a href="/root/level-1/foo">
<a href="/root/level-1a/foo">
<a href="/root/level-1b/foo">
<a href="/root/level-1/level-2">
<a href="/root/level-1/level-2a">
<a href="/root/level-1/level-2b">
<a href="/root/level-2/foo">
<a href="/root/level-2a/foo">
<a href="/root/level-2b/foo">
etc...
我试图让NGINX意识到,当我有一个类似于/root/level-1的URL时,它应该尝试文件/root/level-1.html或/root/level-1/level-2,它尝试/root/level-1/level-2.html或/root/level-1/level-2a/foo,它尝试/root/level-1/level-2a/foo.html
这是我为我的位置设置所设置的,我特别尝试针对“根”位置。
location ~ ^/root/.*$ {
try_files $uri.html $uri $uri/ =404;
}
现在,当我尝试http://localhost/root/level-1时,我得到了一个403禁止,我浏览器中的URL最终看起来像这样“http://localhost/root/level-1/”(URL现在在它的结尾有一个正斜杠)。
我已经尝试了几种组合,但我认为我错过了NGINX正在做什么和我需要告诉它在我的情况下做什么的核心理解。
有人能帮忙吗?
1条答案
按热度按时间7d7tgy0s1#
这让我有99%的把握
这个URL是工作
/root/level-1/level-2
,但如果我然后试图获得/root/level-1/level-2/foo
它不尝试和读取/root/level-1/level-2/foo.html
我得到一个404错误.我应该补充的是,
/root/level-1/level-2
中没有foo文件夹,只有/root/level-1/level-2/foo.html
我很高兴听到那些比我更熟练的人说这个解决方案可以改进。