Questo URL è riscrittura regolare, la corrispondenza di espressione regolare ha lo stesso risultato di una stringa divisa su '/'?

StackOverflow https://stackoverflow.com/questions/9458241

Domanda

Sto osservando di sostituire uno script di reindirizzamento PHP che divide la stringa di query su '/' con una regola di riscrittura 2.0 URL IIS 7.

Ecco il codice che estrae le informazioni dalla richiesta nello script di reindirizzamento originale:

list($campaign,$banner,$add_code,$deploy,$opt) = split("/",$_SERVER['QUERY_STRING']);
.

Ed ecco quello che penso possa sostituirlo:

<rule name="MyRule">
   <match url="(.*?)/(.*?)/(.*?)/(.*?)/(.*)" />
   <action type="Redirect" url="TestRedirectTarget.aspx/?campaign={R:1}&amp;banner={R:2}&amp;add_code={R:3}&amp;deploy={R:4}&amp;opt={R:5}" />
</rule>
.

Sto chiedendo se c'è qualcosa che non sto pensando in termini di corrispondenza della regex è la stessa funzionalità della logica PHP String-Split-Assed-to-List.Ho trovato un problema tale che dovevo usare la corrispondenza pigra per gestire il caso che ci sono più di 5 pezzi di URL separato da Slash.Mi chiedo se ci sono altri casi in cui il risultato non sarebbe lo stesso.

È stato utile?

Soluzione

La tua corrispondenza EXPR differisce URL di WRT che contengono il nome / indirizzo del server (mancata corrispondenza della mappatura) e il cui QS contiene meno di 5 parti (potenzialmente nessuna corrispondenza).
Per catturare queste condizioni, utilizzare gli attributi URL come segue:
\?([^/]*)($|/([^/]*)($|/([^/]*)($|/([^/]*)($|/(.*)))))
. -> TestRedirectTarget.aspx/?campaign={R:1}&amp;banner={R:3}&amp;add_code={R:5}&amp??;deploy={R:7}&amp;opt={R:9}.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top