Questo URL è riscrittura regolare, la corrispondenza di espressione regolare ha lo stesso risultato di una stringa divisa su '/'?
-
13-11-2019 - |
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}&banner={R:2}&add_code={R:3}&deploy={R:4}&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.
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}&banner={R:3}&add_code={R:5}&??;deploy={R:7}&opt={R:9}
.