1

このツールのマッピングの問題を実装したいのですが、機能させることができません。ルールは次のとおりです。

RewriteBase /
RewriteMap mapfile txt:mapfile.txt
RewriteRule /([^?/]+)\.asp /Products.asp?Prod=${mapfile:$1}

たとえば、次の形式の Web サイト上のすべてのファイルが必要です。 /products.asp?prod=2

  • 交換された/LAW
  • または少なくとも/products-LAW

mapfile.txt という名前のマップ ファイルを作成し、.htaccess ファイルと共にルート Web ファイルに配置しました。一行だけ書いた

law 2

そして何も起こりません。

私は何を間違っていますか?

ありがとう!

4

2 に答える 2

1

これはずっと前に尋ねられましたが、まだそこにあるので、ここに答えがあります:

ルールには .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)

元のパラメーターは、ルール置換パラメーターの末尾に追加され、ドキュメントから判断され、ログ ファイルから検証されます。

于 2011-07-04T15:14:18.400 に答える
0

I believe you have the variables in your map file the wrong way round. The first var is the match, the second is the replace:

2   law
于 2009-12-16T13:40:13.297 に答える