ExpressJS Router normalisierte / kanonische URLs

8

Ich bin nach normalisierten / kanonischen URLs für SPA mit ExpressJS Server.

Obwohl es ein SPA ist, das vom serverseitigen Router unterstützt wird, können sich Vorlagen für App-URLs ein wenig unterscheiden. Einer der Unterschiede ist <link rel="canonical" href="https://example.com{{ originalPath }}"> tag. Nicht das relevante Detail, sondern erklärt den Kontext der Frage. Ich erwarte, dass es nur eine URL geben wird, die mit 200 antwortet, ihre Variationen werden mit 301/302 dorthin umgeleitet (funktioniert für lebende Menschen und Suchmaschinen).

Ich möchte die URLs für die Groß- / Kleinschreibung sensitiv und strikt machen (kein zusätzlicher Schrägstrich), ähnlich wie bei Router Optionen, aber nicht-kanonische URLs (die sich in Groß- und Kleinschreibung unterscheiden) sollten 301/302 auf die kanonische URL anstelle von 404 umleiten.

In den meisten Apps möchte ich nur die URLs für * routes zwingen, mit weniger Schrägstrichen (mit Ausnahme von Abfragen) zu versehen. I.e. app.all('*', ...) , und die Weiterleitungen sind:

%Vor%

Es kann jedoch Ausnahmen geben, wenn die Routen explizit definiert sind. Zum Beispiel gibt es Kamelrouten:

%Vor%

Und alle nicht-kanonischen URLs sollten nach canonical umgeleitet werden (Parameter-Case ist intakt geblieben):

%Vor%

Die Logik hinter kanonischen URLs ist ziemlich einfach, so dass es seltsam ist, dass ich nichts zu diesem Thema in Bezug auf ExpressJS finden konnte.

Was ist der beste Weg, dies zu tun? Gibt es schon Mittel, die helfen können?

    
estus 11.02.2017, 19:10
quelle

3 Antworten

4

Ich habe nach npms gesucht, ich konnte keine finden, also hat das meine Gedanken zerkratzt und ich habe eine kleine Aufgabe für express für jede Anfrage programmiert, die gut zu funktionieren scheint. Bitte fügen Sie dies Ihrem Code hinzu.

%Vor%

VERWENDUNG

Alles was Sie tun müssen ist, Ihre URLs zu urls object hinzuzufügen, wie oben, indem Sie denselben Schlüsselwert erhalten. Das ist es. Sehen Sie, wie einfach das ist. Jetzt werden alle Ihre Kundenanforderungen auf die richtige Seite case sensitively umgeleitet.

AKTUALISIEREN

Ich habe auch eine für POST Anfragen erstellt, ich denke es ist ziemlich genau, du solltest es auch versuchen. Wenn Sie eine Weiterleitung wünschen, wenn der Benutzer Schrägstriche mischt, müssen Sie regex dafür schreiben. Ich hatte keine Zeit, auch mein Gehirn war gebraten, also machte ich einen einfachen. Sie können es ändern, wie Sie möchten. Jede Webstruktur hat ihre eigenen Regeln.

%Vor%     
user8377060 24.08.2017, 02:19
quelle
1

Sie möchten wahrscheinlich dafür Ihre eigene Middleware schreiben, etwas nach dem Motto:

%Vor%

Denken Sie daran, dass diese Middleware nach all Ihren aktuellen Routen platziert werden kann, so dass Sie, wenn sie nicht mit einer bestehenden Route übereinstimmen, versuchen können, nachzuschlagen, was sie sein soll. Wenn Sie die Routenerkennung ohne Berücksichtigung der Groß- / Kleinschreibung verwenden, sollten Sie dies vor Ihren Routen tun.

    
Mike Valstar 23.08.2017 21:29
quelle
0

Verwenden Sie den gleichen Code wie @ user8377060 nur mit einer Regex stattdessen.

%Vor%     
Arel Sapir 30.08.2017 09:28
quelle