2012-11-21 2 views
0

사용자가 URL에 로케일없이 들어온 경우 일반 등록 페이지로 로캘로 로캘을 사용하고 사용자가 로캘로 제공되는 경우 특정 등록 페이지로 리디렉션하고 싶습니다.로케일 특정 페이지에 대한 apache 다시 쓰기 규칙

RewriteCond %{QUERY_STRING} source=actp 
RewriteRule ^/(en|de|fr|zh|ja|jp|ko|kr)/web/login/registration $1/web/login/registration? [R=301,L] 

RewriteCond %{QUERY_STRING} source=actp 
RewriteRule /web/login/registration /web/login/registration? [R=301,L] 

예 : 어떤 이유로 아래 저를 해결하는 방법을 알려 작동하지 않습니다를 들어

Before: website.com/web/login/registration 
after: website.com/web/login/registration?source=actp 
before: website.com/kr/web/login/registration 
after: website.com/kr/web/login/registration?source=actp 
+0

아파치의 conf 파일이나 .htaccess로이 재 작성 규칙인가? URL 끝 부분에'? '를 추가하려고합니까? –

+0

다시 쓰기 규칙이 redirects.conf 파일에 있습니다. 두 번째 의도는 일반 등록 페이지로 로케일없이 도착하면 리디렉션하는 것입니다. – Swaroop

+0

도 추가해야합니까? URL 끝까지 예 – Swaroop

답변

0

잘못 여기 전에/URL의 후, 사용중인한다 RewriteCond 기준으로합니다. 쿼리 문자열 source=actp이 RewriteRule을 평가하기 전에 일치해야합니다. 이전 URL에는 이러한 쿼리 문자열이 없기 때문에 RewriteRule은 평가되지 않습니다. 여기서 RewriteCond를 전혀 필요로하지 않습니다.

이 시도 :

RewriteRule ^/?((en|de|fr|zh|ja|jp|ko|kr)/)?web/login/registration$ /$2web/login/registration?source=actp [R=301,L] 
+0

$ 2 이후 슬래시가 없으십니까? – Swaroop

+0

@Swaroop 아니요, 슬래시는 캡처 한 패턴의 일부로 포함됩니다. 그래서 $ 1 대신 $ 2를 사용하고 있습니다. –

+0

@Swarrop URL의 전체 언어 코드에 대해 0 또는 1을 사용하여 하나의 규칙 만 필요하도록했습니다. 또한이 응답을 읽는 다른 사람들이 서버 컨텍스트 (.conf 파일) 또는 디렉터리 컨텍스트 (.htaccess)에서 사용할 수 있도록 처음에'^ /? '를 추가했습니다. '^ /'를 단지'^ /'를 위해 쉽게 바꿀 수 있습니다. –