少し遅れましたが、Isapi Rewrite バージョン 2 からバージョン 3 にアップグレードしました。
次のスタイルのルールに問題があります。
RewriteRule ^/seo-friendly/(\?(.*))? /test/index.cfm?page=home&$2
ここでは、書き換えられた URL に渡される追加のクエリ文字列パラメーターが必要です。
これは IR2 では正常に機能しましたが、IR3 では追加のパラメーターを渡すことができませんでした。各バージョンの Regex tester .exe ユーティリティを両方持っているので、それらを試しました。
/seo-friendly/?hello=worldと入力すると、IR2 の正規表現テスターは$1: ?hello=worldと$2: hello=worldを言い ます。
しかし、IR3 は$0: /seo-friendly/と言い、 $1と$2は空白です。
クエリ文字列変数にアクセスできないようです。
ドキュメントで言及されているこのフラグを見つけました:
O (ノーマライズ)
処理前に文字列を正規化します。正規化には、URL エンコーディングや不正な文字などの削除が含まれます。また、URI の IIS 正規化では、クエリ文字列が完全に削除されます。そのため、クエリ文字列が必要な場合は正規化を使用しないでください
しかし、私は自分のルールに対してこのフラグを設定していません。この (明らかな) 正規化を停止するために設定できるグローバル ルールはありますか?