как перенаправить на index.html для всех URL-адресов, кроме случаев, когда в URL-адресе есть одна конкретная QueryString?
Например:
Перенаправить все остальные URL-адреса со строками запроса на index.html, кроме случаев, когда он имеет ngsw-cache-bust
example.com/ngsw.json?ngsw-cache-bust=0.24039143891136616
я пробовал следующий код
server {
index index.html;
root /dist;
listen 80;
location / {
try_files $uri$args $uri$args/ /index.html;
}
}
что мне не хватает?





Возможно, вы могли бы попробовать что-то вроде этого
server {
index index.html;
root /dist;
listen 80;
location / {
if ($arg_ngsw-cache-bust == "") {
rewrite ^(.*)$ /index.html last;
}
}
}
Если параметр запроса ngsw-cache-bust отсутствует или имеет пустое значение - то делаем внутреннее перенаправление на index.html. Но если параметр запроса не пустой - то просто пытаемся вернуть соответствующий файл (или ошибка 404, если файл отсутствует). Разве это не было запрошенным поведением?
да точно ... но почему мы используем перезапись?
Чтобы сэкономить несколько циклов приема-передачи - если вы вернете 301, это заставит браузер выдать еще один HTTP-запрос. Это быстрее и проще, если вы просто отправите файл по первому запросу.
почему мы переписываем вместо того, чтобы отправлять файл как ngsw.json?