Karten in IIS7 neu schreiben - wie kann die Übereinstimmung optional einen abschließenden Schrägstrich enthalten?

9

Ich habe die Top 30 Google-Treffer für verschiedene Kombinationen von IIS rewrite map condition und so weiter gelesen, aber ich kann keine anständige Dokumentation finden, weder auf einer Microsoft.com-Website noch an anderer Stelle.

Ich habe in IIS7 eine Reihe von Neuschreibmaps, die ich unabhängig davon, ob ihnen ein Schrägstrich folgt, bearbeiten möchte. Also sollten www.foo.com/bar und www.foo.com/bar/ beide der Regel entsprechen.

%Vor%

Nun funktioniert das perfekt, außer dass die einzige Möglichkeit, /terms/ mit dem ersten Schlüssel in der Neuschreibe-Map zu vergleichen, darin besteht, die Map zu duplizieren, so dass sie lautet:

%Vor%

Das erscheint lächerlich unelegant, da ich reguläre Ausdrücke benutze, um sie an erster Stelle zu finden. Das Hinzufügen von /? zur Bedingungseingabe oder zum Bedingungsmuster scheint nicht zu funktionieren.

Ich habe die Antwort zu IIS7 Rewrite Map Regex? , das reguläre Ausdrücke erwähnt, kann nicht verwendet werden (Zitat aus Verwenden von Karten im URL-Rewrite-Modul umschreiben ), aber, wie ich bereits erwähnt habe, scheint sich dies auf die spezifischen Beispiele zu beziehen, die vor diesem Text angegeben wurden, und nicht auf" kann nie funktionieren ".

Was vermisse ich? Es muss ein Mittel geben, dies zu tun; vermisse ich etwas offensichtlich?

    
Owen Blacker 24.03.2014, 14:01
quelle

2 Antworten

11

Das sollte es tun:

%Vor% Du warst ziemlich nah dran. Ich musste nur drei kleine Änderungen vornehmen:

  • entfernte die führenden Schrägstriche in den Schlüsseln in der Neuschreibe-Map
  • hat den nicht-gierigen Quantifizierer +? in der Übereinstimmung der Regel verwendet
  • hat eine Rückverweisung auf die Übereinstimmung {R:1} in der Konditionseingabe
  • verwendet

Ich teile Ihre Erfahrung mit Schwierigkeiten bei der Suche nach anständiger Dokumentation; Ich musste mich mit Hilfe der folgenden Artikel durchprobieren:

Ruud Helderman 26.03.2014, 18:04
quelle
0

Erstens, verwende keinen Punkt, es passt zu allem und ist natürlich gierig. Verwenden Sie stattdessen die Zeichen-Negation: ([^\n]+) . Versuchen Sie es, führen Sie es erneut aus, und wenn das nicht funktioniert, fügen Sie /? erneut dem Attribut pattern hinzu.

    
Benjamin Howarth 26.03.2014 12:55
quelle