Я расследую нежелательный побочный эффект хостинга Firebase. Он пытается нормализовать URL-адреса с несколькими слэшами на один sla sh, перенаправляя с помощью 301 «чистый» URL-адрес.
Например, это случается (двойной знак sh между foo и bar):
https://hostname/foo//bar
=> HTTP 301 до: https://hostname/foo/bar
, что делает смысл!
Но .. при использовании Angular и с несколькими вспомогательными маршрутами, они также разделяются с двумя слэшами маршрутизатором Angular, и эти URL-адреса также будут перенаправляться на хостинг Firebase. Например:
https://hostname/(outlet1:foo//outlet2:bar)
=> HTTP 301 to: https://hostname/%28outlet1:foo/outlet2:bar%29
И, таким образом, удаление / между двумя вспомогательными маршрутами (и кодирование символов (и), но это менее актуально для этого)
Я не могу найти способ настроить это поведение в Firebase, ни через консоль, ни через firebase.json
. Кто-нибудь есть какие-либо предложения, если это поведение может быть настроено / отключено?
[править] Это поведение Angular Маршрутизатор является «жестко закодированным».
Файл: packages / router / src / url_tree.ts # L335
function serializeSegment(...)
...
return `${serializePaths(segment)}/(${children.join('//')})`;
https://github.com/angular/angular/blob/master/packages/router/src/url_tree.ts#L335