it-swarm.com.de

Regex Soll die Mod-Rewrite-Regel mit oder ohne abschließenden Schrägstrich funktionieren?

Unter Berücksichtigung der folgenden Umschreiberegel:

RewriteRule ^user/([^/]*)$ /userprofile.php?user=$1 [L]

Wie kann ich es entweder mit oder ohne einen abschließenden Schrägstrich arbeiten lassen?

Bonuspunkte, wie kann ich überprüfen, ob ([^/]*) nur Ziffern enthält?

1
RewriteRule ^user/([0-9]+)(/?)$    /userprofile.php?user=$1   [L]

Die obige Regel sollte unter folgenden Bedingungen zutreffen:

  • user/123
  • user/123/

Es wird nicht passen:

  • user/fred
  • user/123fred
  • user/fred123

([0-9]+) bedeutet, dass eine Ziffer mit einer oder mehreren Ziffern übereinstimmt.
(/?)$ bedeutet eine optionale Übereinstimmung mit einem Schrägstrich, gefolgt von einem obligatorischen Ende der Zeichenfolge.

Für zusätzliches Guthaben können Sie sogar Folgendes verwenden:

RewriteRule ^user/([0-9]{1,9})(/?)$    /userprofile.php?user=$1   [L]

Das heißt, es muss Zahlen zwischen einer und neun Ziffern abgleichen (das Ding {1,9}). Nützlich als Input-Validator.

2
sysadmin1138