2013-08-09 2 views
0

다른 파일을 가리키는 두 가지 다시 쓰기 규칙을 만들려고합니다. 그러나, 그들은 어떻게 든 동일한 PHP 파일을 가리키고 있습니다.RewriteRule이 같은 디렉토리에 있습니다.

누군가가 도와 주시겠습니까?


RewriteRule ^destinations/([a-z]+)-(.*)$ /a.php?x=$1&y=$2 [NC] 
이가 usunited-state 사이 united-statecalifornia 사이 www.example.com/destination/us-united-state-california

답변

0

정규 표현식이 가능한 한 가장 긴 일치를 찾습니다. 따라서 ([a-z]+)-(.*)$은 하나 이상의 a부터 z까지의 문자와 일치하며 대시와 그 뒤에는 ANYTHING이옵니다.

([a-z]+)-(.+)-(.+)

는 두 개의 대시를 필요로하지만, 위의 표현은 너무이 일치합니다.

RewriteRule ^destinations/([a-z]+)-([^-]+)$ /a.php?x=$1&y=$2 [NC] 

다음

RewriteRule ^destinations/([a-z]+)-([^-]+)-([^-]+)$ /b.php?a=$1&b=$2&c=$3 [NC] 

같은 페이지에 맞게

www.example.com/destination/us-unitedstate 

에 페이지 이름을 변경 :

하면 일치하는 대시의 올바른 번호가 있는지 확인

www.example.com/destination/us-unitedstate-california 
+0

첫 번째 규칙은 여전히 ​​'www.example.com/destination/us-unitedstate-california'와 일치합니다. '[^ -] +'를 대신 사용하십시오. – Sumurai8

+0

조명 응답에 감사드립니다. 나는 yr 제안을 그것을 시도 할 것이다! – user2666818

+0

죄송합니다. 예, [^ -] +를 사용해야합니다.하지만 고쳐졌습니다. 고마워. – idfah

0

사용에 다른 구분 기호를 연결되어야 www.example.com/destination/us-united-state


RewriteRule ^destinations/([a-z]+)-(.+)-(.+)$ /b.php?a=$1&b=$2&c=$3 [NC] 

에 연결해야 . www.example.com/destination/us-united-state에있는 세 개의 분리 된 단어가 실제로 두세 개의 '사물'인지 여부를 감지 할 수있는 방법은 없습니다. 대신 구분 기호로 슬래시를 사용하는 조언 : www.example.com/destination/us/united-statewww.example.com/destination/us/united-state/california.

규칙은 다음과 같습니다 이것은 / 문자 아무것도하지만, 일치하는, [^/]+를 사용

RewriteRule ^destinations/([a-z]+)/([^/]+)/?$ /a.php?x=$1&y=$2 [NC] 
RewriteRule ^destinations/([a-z]+)/([^/]+)/([^/]+)/?$ /b.php?a=$1&b=$2&c=$3 [NC] 

. 이렇게하면 캡처 그룹이 us/united-states과 일치하지 않게됩니다. 여기서 일치하는 숫자는 us입니다. 이 컴퓨터에서 테스트 할 수 없으므로이 코드는 테스트되지 않았습니다.

+0

내 생각을 분명히 해줘서 고마워. – user2666818

관련 문제