1

少し遅れましたが、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 正規化では、クエリ文字列が完全に削除されます。そのため、クエリ文字列が必要な場合は正規化を使用しないでください

しかし、私は自分のルールに対してこのフラグを設定していません。この (明らかな) 正規化を停止するために設定できるグローバル ルールはありますか?

4

1 に答える 1

1

ISAPI RewriteがApacheのmod_rewriteとほぼ同じように機能する場合は、QSAフラグを設定する必要があります。

RewriteRule ^/seo-friendly/$ /test/index.cfm?page=home [QSA]
于 2009-07-06T17:44:00.653 に答える