在nginx root上我们有这样的文件:
- test\
image.jpg
index.html
- ...
index.html上有image.jpg的链接:
<img src='image.jpg'>
在标准的Nginx配置中,我们有这样的行(http://nginx.org/ru/docs/http/ngx_http_core_module.html#try_files)
server {
server_name example.com;
...
try_files $uri $uri/index.html;
}
对于网址http://example.com/test/index.html(和http://example.com/test/),一切都会正常运行,因为相对路径的基数为http://example.com/test/,我们在此文件夹中有image.jpg。
将显示http://example.com/test页面,但没有图片。
在这种情况下,最佳解决方案是什么?
答案 0 :(得分:3)
我认为你的意思是$uri
我而不是$url
L 。
问题是try_files
会在$uri/index.html
处获取文件,但保留URI为/test
,因此任何相对URI都将相对于/
而不是{{1} }}
如果要在HTML文件中使用相对URI,则必须对目录引用强制执行尾随/test/
。例如:
/
这会导致index index.html;
try_files $uri $uri/ =404;
重定向到/test
,而/test/
指令会自动尝试子目录中的index
文件。