Как обслуживать 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. Кто-нибудь знает, как я могу правильно обслуживать все типы файлов?
Ответы
Ответ 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;
}