2016-09-22 8 views
0

스택 오버플로 질문 및 답변을 검색하는 데 최선을 다했으며 솔루션을 적용하려고 시도했지만 작동하지 않습니다..htaccess index.php에서 리디렉션이 작동하지 않습니다.

RewriteCond %{HTTP_HOST} ^www.example\.com [NC] 
RewriteRule ^(index\.php\?lang\=)$ http://www.example.com/$1 [L,R=302] 

위치/인덱스 : 이것은 내가하려고 무엇

http://www.example.com/index.php?lang=XX

http://www.example.com/XX

나는으로 시작하는 모든 adresses를 리디렉션합니다 .php? lang = ko 이 (가) 리디렉션되지 않습니다. 동일한 URL에 있습니다.

+0

무슨 뜻입니까? 사용자는 여전히 http://www.example.com/index.php?lang=en에 있습니다.이게 무슨 뜻입니까? –

+0

나는 완전히 혼란 스럽다. 나는 example.com/en에서 끝내야합니다. – frankie

+0

네,하지만 현재 사용자는 어디에서 끝났습니까? http://www.example.com/index.php?lang=en (다른 말로하면 리디렉션 없음)? –

답변

1

rewriterule에서 query_string을 일치시킬 수 없습니다. 당신은 그것에 대한 특정 RewriteCond가 필요합니다. 다음과 같아야합니다.

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] 
RewriteCond %{QUERY_STRING} ^lang=(.*) 
RewriteRule^http://www.example.com/%1 [R=302,L,QSD] 
+0

왜'^'와'http : //'사이에 공백이 있어야합니까? – frankie

+0

수정 : 답변을 업데이트 한 후 지금 작동 중입니다. 고맙습니다. 나는 그것을 정확하게 검사하고 돌아올 것이다. – frankie

+1

^는 문자열의 시작을 나타냅니다. 아무 것도 캡처하지 않으므로 아무 것도 필요하지 않습니다. 그렇다면 다시 작성 루프를 피하기 위해 QSD (쿼리 문자열 삭제)를 추가했습니다. 나에게 그것을 상기시켜 주신 @ 리치 보웬에게 감사드립니다. –

관련 문제