2010-03-10 6 views
4

현재 URL을 다시 작성하고 있지만 RegEx 표현식은 무시하고 싶은 디렉토리를 잡아냅니다.RegEx URL 용어가 존재하지 않는 한 모든 표현식이 일치합니다.

다시 쓰기 규칙과 일치합니다 모든 것을 잡는다 어떤 ...

^people/([A-Za-z0-9\-\_]+)/?$ 

입니다. 그러나, 나는 것으로 생각해서는 안 ... 전달합니다 ...

/people/John_Smith 

... 예를 들어, 그래서 디렉토리, People_Search을 제외 좋아하지만

/people/People_Search 

것이다.

내가 찾고자하는 유일한 용어이므로 문자열에있는 모든 부분이 있으면 무시하고 싶습니다.

아이디어가 있으십니까?

+0

People_Search 일치 방지한다. 그래서 그것은 다른 규칙이나 다른 것과 충돌합니다. .htaccess 파일은 어떻게 생겼습니까? – Gumbo

답변

7

Regex에는 기본적으로 "다음과 일치하지 않습니다"라는 "비 캡처 부정적인 선행 선언"이라는 것이 있습니다. 그것은 다음과 같습니다

^people/(?!People_Search)([A-Za-z0-9\-\_]+)/?$ 
이가 사용하는 재 작성 엔진에 따라 사용할 수 있는지 여부

, 그리고에 포함 된 정규식 지원 수준. 나는 가장 일반적인 rewriters이 지원 기대합니다.

FYI : negative lookbehind 어설 션 (? <!) 및 lookahead (? =) 및 lookbehind (? < =) 어썰션의 포스팅 버전도 있습니다.

설명 : http://www.regular-expressions.info/lookaround.html

1
^people/(?!People_Search)([A-Za-z0-9\-\_]+)/?$ 

음 룩어 정규 표현식 일치 people/

관련 문제