Исключение каталога с помощью ISAPI-Rewrite

Я пытаюсь исключить каталог с помощью ISAPI-Rewrite (примечание: это порт для мод-перезаписи windows / iis).

Каталог, который я хочу исключить, называется api, когда он находится в корне сайта.

Вот мое правило:

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

Запрос будет выглядеть примерно так: / api / v2 / users? Usernames = scottw

К сожалению, значение строки запроса всегда исключается, а URL-адрес переписывается как / api / v2 / users.

Я атакую, исходя из предположения, что (. +) Захватит все остальное.

Какие-либо предложения? Или лучший способ исключить каталог?

Спасибо

Обновление: я также упростил правило, но это тоже ничего не изменило:

RewriteRule ^ (/ api /.+)$ 1 доллар


person Scott Watermasysk    schedule 19.05.2009    source источник


Ответы (2)


Оказывается, здесь происходят две вещи:

  1. Регулярное выражение должно быть ^ (api /), а не ^ (/ api). Первый "/" исключен.
  2. Инструмент парсера регулярных выражений, который поставляется с ISAPI_Rewrite, похоже, не обрабатывает строки запроса должным образом.

Правило, которое наконец, кажется, работает:

RewriteRule ^(api/.+) $1 [NC,L]
person Scott Watermasysk    schedule 19.05.2009
comment
Оказывается, может быть и проще. RewriteRule ^ api / - [NC, L] - person Scott Watermasysk; 20.05.2009

Иногда я видел, что '. +' Работает странно, вы можете попробовать переключиться на '.. *' Я не говорю, что это сработает, но, возможно, стоит попробовать.

person Kevin Up    schedule 19.05.2009