2009-03-10 5 views

답변

4
RewriteRule ^/cat_ap~nid~(.*)\.htm$ /cat_ap?nid=$1 [R] 

[R] 날 지점 수있는 선택 사항입니다. 이를 생략하면 Apache는 사용자를 리디렉션하지 않고 올바른 페이지를 제공합니다. nid 부분이 변수는 경우

, 당신이 시도 할 수 있습니다 :

RewriteRule ^/cat_ap~([^~]+)~(.*)\.htm$ /cat_ap?$1=$2 [R] 

편집 : 빈 벤 그의 코멘트 말했다, 당신은 유효한 URL의 집합을 제한 할 수 있습니다. 예를 들어, 당신은 확실히 꾸벅 꾸벅가 존재하게 할 수 있습니다, 그것은 수치 있다고 다음 꾸벅 꾸벅 부분은 단지 알파벳 문자로 구성하는 변수 인 경우

RewriteRule ^/cat_ap~nid~([0-9]+)\.htm$ /cat_ap?nid=$1 

또는

가 :

RewriteRule ^/cat_ap~([A-Za-z]+)~([0-9]+)\.htm$ /cat_ap?$1=$2 
+0

일치하는 문자를 제한 할 수 있습니다 (kristina의 답변에 대한 의견 참조). 예를 들어, ID가 항상 숫자 인 경우, (. *) 대신 ([0-9] +)를 사용해보십시오. –

+0

그래, 나는 크리스티나의 대답에 대해 논평했다. =) 나는 내 대답을 편집하는 것에 대해 생각했지만 그 질문에는 그러한 요구 사항이 나와 있지 않습니다. 어느 쪽이든, 나는 참조 용으로 나의 대답을 편집 할 것이다. –

1

가 가정 여기에 변수 부분이 "NID"및 5964, 당신은 할 수 있습니다 :

RewriteRule ^/cat_ap~(.+)~(.+).htm$ ^/cat_ap?$1=$2 

첫 번째 "(. +)"일치 "NID"와 두 번째 경기 "5964"를.

+0

잘 모르겠습니다. /cat_ap ~ nid ~ foo ~ 5964.htm과 일치하지 않습니까? –

+0

동의합니다. 점에 반올림 된 문자 클래스가 있어야합니다 (예 : [^ ~]). –

+0

당신은 완전히 옳았고, 부정 된 문자 클래스가 훨씬 낫습니다. – kristina

0

당신이 임의의 모든 것을 원하는 경우 : \w[A-Za-z0-9_] 같다

RewriteRule ^/(\w+)~(\w+)~(\w+)\.htm$ $1?$2=$3 [L] 

. .htaccess 파일에서이 규칙을 사용하려면 패턴에서 행간 /을 제거하십시오.