2014-01-20 5 views
0

.htaccess 리디렉션에 문제가 있습니다. 누군가가 나를 도울 수 있기를 바랍니다. (1.5 시간 동안 시도했습니다 ...). 내가 원하는 무엇htaccess - 하위 폴더 리디렉션이 작동하지 않습니다.

:
1) mydomain.com에 mydomain.com/en/ 리디렉션 (폴더 숨기기)
2) 여전히 정상으로 하위 폴더 mydomain.com/fr/ 또는 mydomain.com/es를 사용 (/ EN/년 (기본 폴더에있는이 아니라)!)

내 htaccess로 파일 :

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^en/ 
RewriteRule ^(.*)$ en/$1 [L] 

그것은 무엇을 :
1) 작품 : 리디렉션을 mydomain.com/en/에서에 mydomain.com works
2) 문제 : 나는 mydomain.com/en/fr/ 리디렉션 mydomain.com/fr/ 입력하면

질문 :
나는/EN/폴더에만 작업과하지에이 리디렉션을 얻을 수있는 방법 다른 폴더?
그래서 mydomain.com/fr/은 mydomain.com/fr/에 머무를 것입니까?

도움을 주셔서 감사합니다. 추가 검사를 추가

답변

0

시도 :

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^en/ 
RewriteRule ^(.*)$ en/$1 [L] 

또는

RewriteCond %{DOCUMENT_ROOT}/en%{REQUEST_URI} -f [OR] 
RewriteCond %{DOCUMENT_ROOT}/en%{REQUEST_URI} -d 
RewriteCond %{REQUEST_URI} !^en/ 
RewriteRule ^(.*)$ en/$1 [L] 

폴더를 제거하려면 :

RewriteCond %{THE_REQUEST} \ /+en/([^\ \?]*) 
RewriteRule^/%1 [L,R] 
+0

불행하게도, 두 가지 옵션이 작동하지 않습니다. 그들은 폴더를 숨기지 않으므로 mydomain.com/en/ (htaccess에 아무 것도없는 것처럼)에 머물러 있습니다. – Student

+0

@ 스터드이 것은'/ en /'이없는 URL에 대해서만 재 작성합니다. "Pattern"은'^ (. *) $'(anything)이고 규칙의 ** target **은 "/ en/(anything)"입니다. '/ en/something'과 같은 URL을'/ something'로 리디렉션하는 규칙은 없습니다. 완전히 다르며 외부입니다. –

+0

필자는 제대로 작동하지 않습니다. 국가 IP에 따라 사용자를 언어 버전으로 리디렉션하고 싶습니다. 따라서 프랑스 사용자가 mydomain.com/fr/으로 리디렉션됩니다 (mdomain.com에 들어가면 Maxmind의 Javascript API를 통해 작동합니다). 내가 원하지 않는 유일한 일은 (!) 영어를 사용하는 사용자가 mydomain.com/en으로 이동하는 것입니다. 대신 URL은 mydomain.com이어야합니다. 두 줄의 코드를 추가하면 폴더가 제거됩니다.이 폴더는 하위 폴더/en에있는 파일 대신 주 디렉터리에있는 파일을 사용하기 때문에 절대로 끝나지 않습니다. – Student

관련 문제