Zauważyłem Amazon S3 Redirect rule - GET data is missing, ale po zastosowaniu zaakceptowanej odpowiedzi moje parametry zapytania nadal nie są zachowywane.Reguła przekierowania Amazon S3 - Zachowaj parametry zapytań
Mam stronę, która używa React i React Router, co oznacza, że mam kilka adresów URL, które ładują identyczny HTML i JS, a następnie JS określa, która część aplikacji ma zostać załadowana na podstawie adresu URL.
Na przykład:
/foo,/bar/baz wszystkim należy załadować plik index.html, który ładuje bundle.js. Następnie bundle.js obserwuje adres URL i trasy do jakiegoś komponentu React (również w bundle.js).
Jednak w pliku S3 nie istnieje plik foo, bar lub baz, tylko index.html. Co chcę zrobić, to gdy dostanę 404, przekierowanie do/#!/{URL} (np./Foo przekierowuje do/#!/Foo). Działa to dobrze z moją regułą przekierowania (poniżej). Jednakże, chcę również wprowadzić ze sobą parametry zapytania (np./Foo? Ping = pong przekierowuje do/#!/Foo? Ping = pong), ale zamiast tego/foo? Ping = pong po prostu przekierowuje do/#!/Foo.
Oto moje zasady przekierowania:
<RoutingRules>
<RoutingRule>
<Condition>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<Protocol>http</Protocol>
<HostName>www.mydomain.com</HostName>
<ReplaceKeyPrefixWith>#!/</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>
Wszelkie pomysły na jakiś sposób można to osiągnąć? Idealnie bez konieczności zmiany czegoś w S3/CloudFront za każdym razem, gdy dodaję nową stronę?
Z ciekawości, czy '/ foo /? Ping = pong' działa zgodnie z oczekiwaniami? (dodanie końcowego ukośnika przed '?') –
Przekroczony wpis ... https://stackoverflow.com/questions/20751301/how-can-i-get-query-strings-in-my-amazon-s3-static -website – doublejosh