머리를 감쌀 수없는 문제가 있습니다.Mod 재 작성 문제
http://localhost.com/cat_ap.php?nid=5964
http://localhost.com/cat_ap~nid~5964.htm
에서 내가 가서 어떻게 그 주변의 변화에 대해 : 나는 아파치와 PHP을 사용하고
내가 얻을 필요가? 좀 더 간단한 mod 재 작성을했지만 약간 더 복잡합니다. 누군가가 나에게 다리를 위로 포기하거나 끝에 올바른 방향
머리를 감쌀 수없는 문제가 있습니다.Mod 재 작성 문제
http://localhost.com/cat_ap.php?nid=5964
http://localhost.com/cat_ap~nid~5964.htm
에서 내가 가서 어떻게 그 주변의 변화에 대해 : 나는 아파치와 PHP을 사용하고
내가 얻을 필요가? 좀 더 간단한 mod 재 작성을했지만 약간 더 복잡합니다. 누군가가 나에게 다리를 위로 포기하거나 끝에 올바른 방향
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
가 가정 여기에 변수 부분이 "NID"및 5964, 당신은 할 수 있습니다 :
RewriteRule ^/cat_ap~(.+)~(.+).htm$ ^/cat_ap?$1=$2
첫 번째 "(. +)"일치 "NID"와 두 번째 경기 "5964"를.
잘 모르겠습니다. /cat_ap ~ nid ~ foo ~ 5964.htm과 일치하지 않습니까? –
동의합니다. 점에 반올림 된 문자 클래스가 있어야합니다 (예 : [^ ~]). –
당신은 완전히 옳았고, 부정 된 문자 클래스가 훨씬 낫습니다. – kristina
당신이 임의의 모든 것을 원하는 경우 : \w
이 [A-Za-z0-9_]
같다
RewriteRule ^/(\w+)~(\w+)~(\w+)\.htm$ $1?$2=$3 [L]
. .htaccess 파일에서이 규칙을 사용하려면 패턴에서 행간 /
을 제거하십시오.
일치하는 문자를 제한 할 수 있습니다 (kristina의 답변에 대한 의견 참조). 예를 들어, ID가 항상 숫자 인 경우, (. *) 대신 ([0-9] +)를 사용해보십시오. –
그래, 나는 크리스티나의 대답에 대해 논평했다. =) 나는 내 대답을 편집하는 것에 대해 생각했지만 그 질문에는 그러한 요구 사항이 나와 있지 않습니다. 어느 쪽이든, 나는 참조 용으로 나의 대답을 편집 할 것이다. –