2011-05-04 3 views

답변

3

mod_rewriteRewriteRule의 첫 번째 매개 변수에있는 쿼리 문자열과 일치하지 않습니다. 대신 RewriteCond이 필요합니다. 또한 .htaccess에 다시 쓰기 규칙을 사용하는 경우 RewriteRule에서 일치하는 경우 앞에 /이 없습니다.

RewriteCond %{QUERY_STRING} id=([^&]*) 
RewriteRule ^cat/subcat/$ /cat/subcat/%1 [L,R=301] 

%1

는 데 도움이 RewriteCond

희망에 일치 된 ID입니다.

+0

나는 이것을 이렇게 쓰는 것을 시작했지만, 다른 방법으로 그것을 다시 읽는 것을 의미한다고 생각했습니다. 그렇지 않으면 그는 재 작성보다는 리디렉션을 의미한다고 생각합니다. – Orbling

+0

@Orbling, 멋진 잡기, 내가 가지고있는 것은 쓸모가 없었습니다 :) – clmarquart

+0

그가 다른 답변에 올린 내용을 보면,'% {QUERY_STRING} '의 전체 내용은' .htaccess'를 사용하면 재 작성은 모든 것을 모든 것을'index.php'로 매핑하는 최종 규칙을 통과 할 때 충분할 수 있습니다. 프로세스가 재 작성된 URL에 대한 모든 해석을 수행하고있는 경우입니다. 올바른 변수를 사용할 때 조심해야합니다. 잘못된 URL을 * 변경 * 처리 *하지 않아야하므로 리디렉션이 일반적으로 더 나은 방법입니다. – Orbling