1

Wir haben eine einzelne Seite Anwendung, die Daten von einem Dienst verbraucht. Die daraus resultierende URL wie folgt aussieht:Rewrite Regeln für s3 gehostete Einzelseitenanwendung

www.domain.com/path/my-awesome-page-title 

S3 ist eine Voraussetzung:

www.domain.com/path/?query=my-awesome-page-title 

wir die URL prettyfied werden möchten.

Ich glaube, die einzige Lösung wird Cloudfront und möglicherweise Lambda enthalten, aber da ich hier frage ... Ich bin mir nicht ganz sicher. Also stelle ich die Frage an Sie Experten da draußen.

+0

Sie möchten die URL prettified ... where ? In der Adressleiste nach dem Sie zu '/ path? Query = ...' navigieren? Oder möchten Sie in der Lage sein, zu der hübschen URL zu navigieren und sie neu schreiben zu lassen? Was genau ist das Verhalten, nach dem du suchst? –

+0

Wenn Benutzer zu www.domain.com/path/my-awesome-page-title navigieren, erhalten sie den richtigen Inhalt und die richtige Erfahrung. Innerhalb der App-Struktur kann ich den Abfrageparameter behalten - oder nicht. // Wie erreichen andere Single-Page-Apps (in Vue oder Angular geschrieben) dies? –

+0

Hier ist eins: https://serverfault.com/a/633571/153161 ... was ich glaube, hat einen Test-Eimer, den ich vergessen habe ... "http://spa-redirect-test.sqlbot.net/posts? this = funktioniert + for + me' leitet zu 'http: //spa-redirect-test.sqlbot.net/#!/posts? this = funktioniert + for + me'. Nicht sicher, ob du das suchst. Dies hält die Abfrage intakt, Bit schreibt es nicht neu - nur der Pfad, mit S3-Redirect-Regeln. –

Antwort

1

Wenn Sie eine schöne URL erstellen möchten, verwenden Sie am einfachsten AWS CloudFront und Edge Lambda URL in AWS Stack, wo Sie eine Zuordnung zu Ihren S3-Pfaden beibehalten. Auf Abfragezeichenfolgen kann jedoch derzeit nicht über Edge Lambda zugegriffen werden, sodass Sie nur den Pfad der URL neu schreiben müssen.

Wenn Sie die gesamte URL einschließlich Abfrage-Strings ändern, können Sie verwenden - API-Gateway die URL neu zu schreiben - EC2-Instanz (Zu schwer, obwohl zum Zwecke)

+0

Während Sie potentiell korrekt sind, glaube ich, dass mehr Informationen erforderlich sind, bevor wir sagen können, ob dies mit den aktuellen Dienstfunktionen funktioniert. Weder S3-Redirect-Regeln noch Lambda @ Edge in CloudFront haben derzeit Lesezugriff auf die Abfragezeichenfolge (nur der Pfad). Sie können sowohl den Abfrage-String in einer Redirect * setzen * (dies ist in S3 Redirect-Regeln eigentlich undokumentiert, aber Sie können es tun mit '': Übereinstimmung Präfix 'foo', ersetzen Präfix durch' foo? Q = ', bedeutet '/ foobar' leitet auf' foo? q = bar' um, aber keiner von beiden kann * es * lesen *. API Gateway-Funktionalität ist möglicherweise erforderlich. –

+0

Michael, was meinst du mit "API-Gateway-Funktionalität könnte notwendig sein" –

+0

@JoshuaLevy, wenn Sie serverseitige Redirects (ohne EC2), die Lesen/Parsing/Interpretieren/Manipulieren der Abfrage-String, weder S3 Redirect Regeln noch tun wollte Lambda @ Edge kann (derzeit) mit diesen arbeiten, sie sehen nur den Pfad ... aber Sie können es relativ einfach mit API Gateway tun, das Zugriff auf die vollständige Anfrage einschließlich der Abfragezeichenfolge hat. –