2017-12-29 46 views
0

können Sie mir erklären, was sind die Unterschiede zwischen diesen Rewrite-Regeln?Unterschiede zwischen Rewrite-Regeln

rewriterule ^news/category/(.*)/([0-9]+)/?$ index.php?p=news&category=$1&page=$2 [L,QSA] 
rewriterule ^news/category/(.+)/([0-9]+)/*$ index.php?p=news&category=$1&page=$2 [L,QSA] 

Unterschiede zwischen (.*) und (.+) und Unterschiede zwischen /?$ und /*$?

und

rewriterule ^news/category/(.*)/?$ index.php?p=news&category=$1 [L,QSA] 
rewriterule ^news/category/(.+?)/*$ index.php?p=news&category=$1 [L,QSA] 

Unterschiede zwischen (.*) und (.+?)?

danke für Ihre Hilfe!

Antwort

0

(.*) Spiele zwischen Null und unbegrenzten Zeiten, als oft wie möglich zurück geben je nach Bedarf (gierig)
(.+) Spiele zwischen einem und unbegrenzten Zeiten, als oft möglichst etwas zurückzugeben benötigt (gierig)
(.+?) Übereinstimmungen zwischen ein und unbegrenzte Zeiten, wie einige Male als möglich, wie erforderlich erweitern (faul)

Zum regex101.com für das Debuggen Ihrer regex

die /?$ und /*$ Ich bin nicht sicher. Es stimmt immer überein.

1

Sie haben die technische Antwort von Gert. Mein „nicht-technischen“ ist:

  • Linie # 1: Wenn die URL einen String oder nichts, gefolgt von einem Schrägstrich und einer Reihe oder nichts, mit /oder nicht enden, dann gelten die RewriteRule
  • Linie # 2: wenn die URL eine Zeichenkette hat, gefolgt von einem Schrägstrich und einer Reihe oder nichts, mit Endung was, dann die RewriteRule gelten

Hier sind die URL Probleme, die Sie haben können:

  • mit # 1, wird diese "gültig" in Betracht gezogen werden: news/category//548/.
  • mit # 2, dies gilt als "gültig": news/category/whatever/548/this-is-a-problematic564string.

Sie können das gleiche Prinzip auf Ihren zweiten Vergleich anwenden.

Verwandte Themen