0

'/'のクエリ文字列を分割するPHPリダイレクトスクリプトをIIS7URL書き換え2.0ルールに置き換えることを検討しています。

元のリダイレクトスクリプトのリクエストから情報を抽出するコードは次のとおりです。

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

そして、これが私がそれを置き換えることができると思うものです:

<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>

一致する正規表現がPHPのstring-split-assiged-to-listロジックと同じ機能であるという点で、私が考えていないことがあるかどうかを尋ねています。スラッシュで区切られたURLが5つを超える場合を処理するために、レイジーマッチングを使用する必要があるという問題を見つけました。結果が同じにならない場合が他にあるのではないかと思います。

4

1 に答える 1

1

一致exprは、サーバー名/アドレスを含み(マッピングの不一致)、qsに含まれる部分が5つ未満(一致しない可能性があります)のURLとは異なります。
これらの条件をキャッチするには、次のようにurl属性を使用します:
\?([^/]*)($|/([^/]*)($|/([^/]*)($|/([^/]*)($|/(.*)))))
-> TestRedirectTarget.aspx/?campaign={R:1}&amp;banner={R:3}&amp;add_code={R:5}&amp??;deploy={R:7}&amp;opt={R:9}

于 2012-03-05T16:12:15.607 に答える