Подтвердить что ты не робот

Как обслуживать html файлы в nginx, не показывая расширение в этой настройке псевдонима

У меня возникли проблемы с настройкой этого псевдонима внутри nginx для правильного отображения моего сайта.

Веб-сайт, на котором я заинтересован, должен быть доступен с mywebsite.com/mr и отличается от сайта, расположенного в mywebsite.com/. Веб-сайт находится в /fullpath (сокращенно для простоты). Сайт должен обслуживать три вида контента:

  • Индексный файл, расположенный в /fullpath/index.html.
  • Другие html файлы (без отображения расширения .html в браузере).
  • Статические активы (js/css/img), расположенные в /fullpath и подкаталогах.

Я попытался изменить порядок совпадений в try_files и нашел ситуации, в которых все они работали, просто не в одно и то же время:

location /mr {
  default_type "text/html";
  alias /fullpath;

  # with this one 1 and 3 work
  # try_files $uri/index.html $uri.html $uri; 

  # with this one 2 and 3 work
  # try_files $uri $uri.html $uri/index.html;

  # with this one 1 and 2 work
  try_files $uri.html $uri/index.html $uri;
}

Если это не работает, то 404. Кто-нибудь знает, как я могу правильно обслуживать все типы файлов?

4b9b3361

Ответ 1

По-видимому, псевдоним и try_files не работают вместе. Однако, я не думаю, что вам нужно использовать псевдоним.

location /mr {
  default_type "text/html";
  try_files  /fullpath/$uri /fullpath/$uri.html /fullpath/$uri/index.html  /fullpath/index.html;
}

Что бы попробовать:

  • Точный файл.
  • Файл с .html добавлен.
  • Указатель в пути.
  • Индекс по умолчанию.

Я думаю, что директива root работает с файлами try, но я не могу проверить.

server{
    location /mr {

        root /home/mysite/fullpath;

        default_type "text/html";
        try_files  $uri $uri.html $uri/index.html index.html;
    }
}

Ответ 2

Я использовал комбо из того, что отправил @Danack, который привел меня к результату, который я искал (напрямую обслуживаем файл html):

location /health-check {
    default_type "text/html";
    alias /path/to/my/file.html;
}