Исключение каталога с ISAPI-Rewrite
Я пытаюсь исключить каталог с ISAPI-Rewrite (примечание: это порт windows / iis mod-rewrite).
Каталог, который я хочу исключить, это "api", когда он находится в корне сайта.
Вот мое правило:
RewriteRule ^ (/ api /)(.+)$ $ 1 $ 2 [NC, L]
Запрос будет выглядеть примерно так: /api/v2/users? Usernames = scottw
К сожалению, значение квест-строки всегда исключается, а URL переписывается как /api/v2/users.
Я атакую в предположении, что (. +) Захватит все остальное.
Какие-либо предложения? Или лучший способ исключить каталог?
Спасибо
Обновление: я также упростил правило, но это тоже ничего не изменило:
RewriteRule ^ (/ api /.+)$ $ 1
2 ответа
Оказывается, здесь происходят две вещи:
- Регулярное выражение должно быть ^(api/), а не ^(/api). Первый знак "/" исключен.
- Средство синтаксического анализа regex, поставляемое с ISAPI_Rewrite, похоже, неправильно обрабатывает строки запросов.
Правило, которое в конечном итоге работает:
RewriteRule ^(api/.+) $1 [NC,L]
Я видел, как иногда ".+" Работает странно, вы можете попробовать переключиться на "…". Я не говорю, что это сработает, но, возможно, стоит попробовать.