2009-12-22 7 views
1

나는 독일인이고 내 망할 영어에 대해 유감이다.Mod Rewrite-Syntax에 선택적 매개 변수를 설정하려면 어떻게합니까?

RewriteRule ^admin/(.*)$ index.php?admin=$1 

여기에 예가 나와 있습니다. 그래서 내가 원하는 결과는 ID 내에서, 예를 들어,하지만 선택적 매개 변수로 : 여기

RewriteRule ^admin/(.*)/id-(.*)$ index.php?admin=$1&id=$2 

ID가 내가 :

링크 예를 원하는 먹으 렴을 설정해야하지 않는다 (내가 원하는

www.exmple.com/admin/edit-user
www.exmple.com/admin/edit-user/id-1

문제가 : 여기 것과 같은 결과)입니다 규칙 언제나 첫 번째 방법은 다음과 같습니다.

RewriteRule ^admin/(.*)$ index.php?admin=$1 

아무도 도와 줄 수 있습니까? :)

사랑의 인사 m0.

답변

3

규칙 순서를 변경하고 전자 메일에서 [L] 플래그를 잊지 마십시오. 차 : 그것은 임의의 문자의 임의의 길이를 일치로

RewriteRule ^admin/(.*)/id-(.*)$ index.php?admin=$1&id=$2 [L] 

RewriteRule ^admin/(.*)$ index.php?admin=$1 [L] 
2

옵션 캡처 그룹을보십시오 :이 지정된 경우

index.php?admin=edit_user&id= 

: 지정된 ID 없음, 다음 $ 3 공란이며 당신은 단지 빈 아이디 다시 쓴를 얻을 수 있습니다이 없다면

RewriteRule ^admin/([^/]*)(/id-(.*))?$ index.php?admin=$1&id=$3 

그러면 id도 얻을 수 있습니다.

index.php?admin=edit_user&id=1 
1

표현 .*가 너무 일반적이다. 더 좋은 식은 / (경로 세그먼트 구분 기호)을 제외하고는 하나 이상의 임의 문자와 일치하는 [^/]+입니다.

그래서이 규칙을 시도해보십시오

RewriteRule ^admin/([^/]+)$ index.php?admin=$1 
RewriteRule ^admin/([^/]+)/id-([^/]+)$ index.php?admin=$1&id=$2 

를 두 번째 규칙의 당신은 또한 단지 정수를 일치합니다 [1-9][0-9]*와 두 번째 [^/]+가 0보다 큰

RewriteRule ^admin/([^/]+)/id-([1-9][0-9]*)$ index.php?admin=$1&id=$2 
0

이 시도 대체 할 수있는 :

RewriteRule /admin/([^/]*)/?(id-(.*))?$ index.php?admin=$1&id=$3 
관련 문제