1

ISAPI-Rewrite を使用してディレクトリを除外しようとしています (注: これは mod-rewrite の windows/iis ポートです)。

サイトのルートにある場合、除外したいディレクトリは「api」です。

これが私のルールです:

RewriteRule ^(/api/)(.+)$ $1$2 [NC, L]

リクエストは次のようになります: /api/v2/users?usernames=scottw

残念ながら、querstring 値は常に除外され、URL は /api/v2/users として書き換えられています。

(.+) が他のすべてをキャプチャするという仮定の下で攻撃しています。

助言がありますか?または、ディレクトリを除外するより良い方法はありますか?

ありがとう

更新:ルールも簡略化しましたが、何も変更されていません:

RewriteRule ^(/api/.+)$ $1

4

2 に答える 2

2

ここでは、次の 2 つのことが行われていることがわかります。

  1. 正規表現は ^(api/) であり、^(/api) ではありません。最初の「/」は除外されます。
  2. ISAPI_Rewrite に同梱されている正規表現パーサー ツールは、クエリ文字列を適切に処理していないようです。

最終的に機能しているように見えるルールは次のとおりです。

RewriteRule ^(api/.+) $1 [NC,L]
于 2009-05-19T14:54:56.057 に答える
0

「.+」が奇妙な動作をするのを見たことがあります。「..*」に切り替えてみてください。うまくいくとは言いませんが、試してみる価値はあるかもしれません。

于 2009-05-19T13:58:18.807 に答える