2013-10-28 2 views
1

다시 쓰기 규칙으로 고생하는 것은 잘못된 구문 일 것이라고 생각합니다.Apache Rewrite Regex Trouble

http://mydomain.org/foo-bar/from2012-10-29/to2012-11-02/page2/

htaccess로는 foo는 바 내에 위치/

내 규칙 :

# if uri contains dates and page: 
RewriteCond %{REQUEST_URI} "from.*to.*page" [NC] 
RewriteRule ^from((19|20|21)\d\d-(0[0-9]|1[012])-(0[1-9]|[12][0-9]|3[01]))/to((19|20|21)\d\d-(0[0-9]|1[012])-(0[1-9]|[12][0-9]|3[01]))/page([0-9]+)/?$ index.php?from=$1&to=$2&p=$3 [NC,L] 

당신은 (희망)에서 볼 수 있듯이

나는이 같은 URL이 이 번역을하려고합니다.

이에 17,451,515,

:

http://mydomain.org/foo-bar/index.php?$from=2012-10-29&$to=2012-11-02&$p=2 

하지만 예상대로 내가 얻고 변수 값이 없습니다. 다음 값을 얻고 있습니다

p= 10 
from= 2012-10-29 
to= 20 

누군가가 나를 위해 명백한 것을 지적 할 수 있기를 바랍니다.

미리 감사드립니다.

+0

당신의 캡처 그룹을 재-수 :

이 코드를 사용해보십시오. 첫 번째 그룹'$ 1'은 완전한 'from'값을 가지지 만, 두 번째 그룹 ('to '이라고 가정하고있는)은'from'값으로부터 단지 세기를 가지고 있습니다. 'to '가 원하는 그룹이'$ 5'인 것 같습니다. – iamnotmaynard

답변

1

당신의 정규식을 간소화하십시오.

RewriteRule ^from([^/]+)/to([^/]+)/page([0-9]+)/?$ index.php?from=$1&to=$2&p=$3 [NC,L,QSA] 
+1

+1 훨씬 좋습니다. – iamnotmaynard

+0

보기 좋고 간단합니다. 약간의 구문을 설명해 주시겠습니까? 올바른 형식의 날짜 만 수락합니까? YYYY-MM-DD 감사합니다. – j0nr

+0

'[^ /] +)'다음에'/'이 발견 될 때까지 텍스트를 매치하므로'YYYY-MM-DD'와 같은 특정 날짜 형식을 필요로하지 않습니다.'from'과'/'사이의 값은 '$ 1'에서'to '와 다음'/'사이에'$ 2 '등으로 캡처됩니다. – anubhava