Nginx和相对路径

时间:2016-10-20 10:20:24

标签: url nginx relative-path

在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页面,但没有图片。

在这种情况下,最佳解决方案是什么?

1 个答案:

答案 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文件。