2016-10-20 13 views
1

На Nginx корня у нас есть такие файлы:Nginx и относительный путь

- test\ 
     image.jpg 
     index.html 
    - ... 

Существует ссылка на image.jpg на index.html:

<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; 
    } 

для получения URL http://example.com/test/index.html (и для http://example.com/test/) все будет работать хорошо, потому что база для относительного пути будет http://example.com/test/, и у нас есть image.jpg в этой папке.

Для http://example.com/test страница будет показана, но без изображения.

Какое наилучшее решение в этом случае?

+2

В этом случае лучшим решением будет использование 'index index.html;' директива вместо 'try_files'. В этом случае nginx будет перенаправлять с '/ test' на'/test/' –

+0

отлично! Спасибо. – potapuff

ответ

2

Я думаю, что вы имеете в виду $uri с I и не $url с L.

Проблема заключается в том, что try_files будет источником файл в $uri/index.html но оставить URI в качестве /test поэтому любые относительные URI, будет относительно / и не /test/.

Если вы собираетесь использовать относительные URI в своих HTML-файлах, вы должны привести в действие конец / в ссылках на каталоги. Например:

index index.html; 
try_files $uri $uri/ =404; 

Это заставит /test перенаправить /test/ и index директива автоматически попробует index.html файл в подкаталог.

 Смежные вопросы

  • Нет связанных вопросов^_^