これはずっと前に尋ねられましたが、まだそこにあるので、ここに答えがあります:
ルールには .asp が含まれているため、URL でそれを探しています。製品名だけが必要なので、ルールに .asp を含めずにこれを試してください。
これは isapi_rewrite v3 用です。
RewriteMap mapfile txt:mapfile.txt [NC]
RewriteRule /([^/]+) /Products.asp?Prod=${mapfile:$1} [NC,QSA,L]
mapfile で [NC] を使用するとlaw 2
、大文字と小文字を気にせずに使用できます。(これはずっと前のビルド 3.1.0.62 以降のものです。)
v3 はルール外のパラメーターを処理するため、ルールは?
.
QSA は、Prod パラメータを受信パラメータに追加します。あなたのルールは で停止していたので、?
受信パラメーターも処理したいと思います。したがって、パラメータは存続します。
これにより、(最初のスラッシュの後) スラッシュで停止するというルールが維持されたため、スラッシュ以降のすべてが一致のために無視され、結果から削除されます。
したがって、これは次のように URL を書き換えます。
/LAW to /Products.asp?Prod=2
/lAw to /Products.asp?Prod=2
/LAW?abc=123 to /Products.asp?Prod=2&abc=123
/LAW/ to /Products.asp?Prod=2
/LAW/?abc=123 to /Products.asp?Prod=2&abc=123 (slash is dropped, but parameters survive)
/LAW/morestuff to /Products.asp?Prod=2 (/morestuff is dropped)
/LAW/morestuff?abc=123 to /Products.asp?Prod=2&abc=123 (/morestuff is dropped, but the parameters survive)
元のパラメーターは、ルール置換パラメーターの末尾に追加され、ドキュメントから判断され、ログ ファイルから検証されます。