2013-02-13 4 views
0

J'ai cette regex pour une réécriture d'url:Url Rewriting Regex - pas de match

<from>^/page/([0-9]+)/order/(.*)/by/(.*)/composition/(.*)/location/(.*)/price_min/(.*)/price_max/(.*)/industry/(.*)/type/(.*)$</from> 
<to>/page=$1&order=$2&by=$3&composition=$4&location_id=$5&price_min=$6&price_max=$7&industry_id=$8&type_id=$9</to> 

Je veux correspondre à une URL comme ci-dessous un, mais il n'y a pas de correspondance.

/page/2/commande/id/par/desc/composition/1/lieu/none/PRICE_MIN/2/PRICE_MAX/2/industrie/2/Type/3

+0

Essayez de remplacer les gourmands '. *' Avec le non-gourmand '. *' – jlordo

Répondre

1

Envisagez d'utiliser le suivant:

^/page/([0-9]+)/order/(.+?)/by/(.+?)/composition/(.+?)/location/(.+?)/price_min/(.+?)/price_max/(.+?)/industry/(.+?)/type/(.+?)$ 

Deux choses avec votre regex:

  1. Vous devez utiliser .+ au lieu de .*, car il y aura toujours des données entre / et /. Vous devez ajouter ?, ce qui signifie qu'il sera non gourmand. C'est l'équivalent en écrivant ([^/]+) à la place, ce qui signifie correspondre à n'importe quel caractère multiple sauf / plusieurs fois.
+0

Oh ok merci je comprends mieux maintenant, je vais essayer plus tard aujourd'hui –

+0

ok, il fonctionne très bien merci, je viens d'ajouter une chose la & devrait être un & –