Есть папка root и в ней лежит index.html - это наш /
А все страницы сайта лежат в root/pages
Как настроить nginx, что все, кроме index.html он пытался найти в pages?
Я правильно понял, если location = /, то это для запроса на главную страницу сайта по www.site.com?
А location / это все страницы, которые www.site.com/about?
Boris007, да, в первом случае точное совпадение, во втором - всё, что начинается с / (то есть, по факту, любой запрос).
location / отличается от location ~ \.html тем, что в последнем случае будут обрабатываться только запросы к .html-файлам, а, например, картинки, CSS-стили и всякое такое в него не попадёт.
Boris007, путь к файлу формируется путём простого добавления URI к значению директивы root. Если же URI необходимо поменять, следует воспользоваться директивой alias.
Можно в location = / { обойтись без alias, например:
Если сделать так, то работать не будет.
Тут будет внутреннее перенаправление "/" -> "/index.html" и запрос попадёт уже в location / { а там другой root указывает на папку /root/pages.