문제

나는 Isapi-Lewrite와 함께 디렉토리를 배제하려고합니다 (참고 : 이것은 Mod-Lewrite의 Windows/IIS 포트입니다).

제외하고 싶은 디렉토리는 사이트의 루트에있을 때 "API"입니다.

내 규칙은 다음과 같습니다.

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

요청은 다음과 같이 보일 것입니다 :/api/v2/users? usernames = scottw

불행히도, 쿼스트 링 값은 항상 제외되고 URL은/api/v2/user로 다시 작성됩니다.

나는 (.+)가 다른 모든 것을 포착 할 것이라는 가정하에 공격하고 있습니다.

제안이 있습니까? 아니면 디렉토리를 배제하는 더 나은 방법?

감사

업데이트: 또한 규칙을 단순화했지만 아무 것도 변경하지 않았습니다.

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

도움이 되었습니까?

해결책

여기에는 두 가지가 있습니다.

  1. regex는 ^(api/)이어야하며 ^(/api)가되어야합니다. 첫 번째 "/"는 제외됩니다.
  2. isapi_rewrite와 함께 배송하는 Regex Parser 도구는 쿼리 스트링을 올바르게 처리하지 않는 것 같습니다.

마침내 작동하는 것으로 보이는 규칙은 다음과 같습니다.

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

다른 팁

나는 때때로 '.+'이상하게 작동한다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top