Korzystając z nginx, chcę zachować adres URL, ale w rzeczywistości ładuję tę samą stronę bez względu na wszystko. Będę używać adresu URL z History.getState()
do kierowania żądań w mojej aplikacji javascript. Wygląda na to, że powinno to być proste?
location / {
rewrite (.*) base.html break;
}
działa, ale przekierowuje adres URL? Nadal potrzebuję adresu URL, po prostu chcę zawsze używać tej samej strony.
javascript
nginx
history
pryzmat wszystkiego
źródło
źródło
Odpowiedzi:
Myślę, że to zrobi to za Ciebie:
źródło
try_files '' /base.html;
(pustego ciągu jako pierwszego argumentu dotry_files
) pozwala uniknąć przeszukiwania pliku o nazwie$uri
.try_files '' /base.html;
dał mi problem z przekierowaniem i wewnętrzny błąd serwera, ale zmodyfikowałem go, aby totry_files '' /base.html =404;
naprawić, jeśli komuś to pomoże.Używanie po prostu
try_files
nie działało dla mnie - spowodowało przepisanie lub wewnętrzny błąd cyklu przekierowania w moich dziennikach.Dokumentacja Nginx zawierała dodatkowe szczegóły:
http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files
Skończyło się na tym, że użyłem:
źródło
try_files '' /base.html =404;
(patrz wyżej)location = /base.html { expires 30s }
roli.Twoje oryginalne przepisanie powinno prawie działać. Nie jestem pewien, dlaczego miałoby to być przekierowanie, ale myślę, że tak naprawdę chcesz po prostu
Powinieneś móc to umieścić w lokalizacji lub bezpośrednio na serwerze.
źródło
To zadziałało dla mnie:
Pozwoliło mi to utworzyć adres URL typu catch-all dla aplikacji jednostronicowej javascript. Wszystkie pliki statyczne, takie jak css, czcionki i javascript utworzone przez program,
npm run build
zostaną znalezione, jeśli znajdują się w tym samym katalogu coindex.html
.Gdyby z jakiegoś powodu pliki statyczne znajdowały się w innym katalogu, potrzebowałbyś również czegoś takiego:
źródło
To zadziałało dla mnie:
źródło
Właściwy sposób to:
Użycie
last
spowoduje, że nginx znajdzie nowy odpowiednilocation
blok zgodnie z wynikiem przepisywania.try_files
jest również doskonale uzasadnionym podejściem do tego problemu.źródło