Nginx: отправлять все запросы на одну страницу html

Используя nginx, я хочу сохранить URL-адрес, но фактически загружаю ту же страницу независимо от того, что. Я буду использовать url с History.getState() для маршрутизации запросов в моем приложении javascript. Кажется, что это должно быть простое дело?

location / {
    rewrite (.*) base.html break;
}

работает, но перенаправляет URL-адрес? Мне все еще нужен url, я просто хочу всегда использовать одну и ту же страницу.

Ответ 1

Я думаю, это сделает это за вас:

location / {
    try_files $uri /base.html;
}

Ответ 2

Оригинальная переписывающая программа должна работать почти. Я не уверен, почему это будет перенаправление, но я думаю, что вы действительно хотите просто

rewrite ^ /base.html break;

Вы можете разместить это в месте или непосредственно на сервере.

Ответ 3

Использование только try_files не сработало для меня - это вызвало ошибку переписать или внутренний цикл перенаправления в моих журналах.

В документах Nginx были дополнительные сведения:

http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files

Итак, я закончил использовать следующее:

root /var/www/mysite;

location / {
    try_files $uri /base.html;
}

location = /base.html {
    expires 30s;
}

Ответ 4

Правильный способ:

location / {
    rewrite (.*) base.html last;
}

Использование last сделает nginx найти новый подходящий блок location в соответствии с результатом перезаписи.

try_files также является вполне допустимым подходом к этой проблеме.

Ответ 5

Это сработало для меня:

location / {
    alias /path/to/my/indexfile/;
    try_files $uri /index.html;
}

Это позволило мне создать URL-адрес catch-all для одностраничного приложения javascript. Все статические файлы, такие как css, fonts и javascript, созданные npm run build, будут найдены, если они находятся в том же каталоге, что и index.html.

Если статические файлы были в другом каталоге, по какой-то причине вам также понадобится что-то вроде:

# Static pages generated by "npm run build"
location ~ ^/css/|^/fonts/|^/semantic/|^/static/ {
    alias /path/to/my/staticfiles/;
}