2017-03-17 4 views
3

영어, 독일어 및 프랑스어로 된 다국어 사이트를 구축 중입니다..htaccess로 언어 변경

  • 영어 : example.com
  • 독일어 : example.com/
  • 드 영어 사이트는 루트 것, 다른 하나는 자신의 하위 디렉토리에있을 것입니다 프랑스어 : example.com/ fr

쿼리 문자열을 사용하여 언어에서 언어로 리디렉션하는 깨끗한 솔루션 을 찾는 데 어려움이 있습니다. (? LANG =, 엉 LANG = 드, LANG = FR?)

이 코드가 작동,하지만 난 그것을 생각 긴으로 :

# Languages 
<IfModule mod_rewrite.c> 
RewriteEngine on 

# Deutsch (Change FR to DE, or add DE if English) 
RewriteCond %{QUERY_STRING} lang=de 
RewriteRule ^fr/(.*) de/$1? [L,R=301] 
RewriteCond %{QUERY_STRING} lang=de 
RewriteRule ^(.*) de/$1? [L,R=301] 

# English (Remove DE if German, Remove FR if French) 
RewriteCond %{QUERY_STRING} lang=en 
RewriteRule ^de/(.*) /$1? [L,R=301] 
RewriteCond %{QUERY_STRING} lang=en 
RewriteRule ^fr/(.*) /$1? [L,R=301] 

# French (Change DE to FR, or add FR if English) 
RewriteCond %{QUERY_STRING} lang=fr 
RewriteRule ^de/(.*) fr/$1? [L,R=301] 
RewriteCond %{QUERY_STRING} lang=sq 
RewriteRule ^(.*) fr/$1? [L,R=301] 
</IfModule> 

어떤 있는가 더 나은 sollution, 그래서 더 많은 언어를 추가 할 경우 더 짧고 깨끗한 코드 것입니다.

처음으로 나는 htaccess를 전혀 연구하지 않았다!

감사합니다.

+0

대신 PHP에서 일을하려고 가치가있을 수도? lang을 확인하고 헤더를 적절하게 변경하십시오. – Deckerz

+0

그것의 워드 프레스 multisite와 각 사이트는 언어를 가지고 있기 때문에 각 헤더를 바꾸기가 어려울 것입니다. htaccess로 생각하면 더 쉬울 것입니다. 언어를 바꾸는 방법을 모를지라도 (플러그인이 필요 없다면) – raktaktak

답변

0

dir 및 쿼리 문자열없이 원하는 언어로 연결하지 않는 이유는 무엇입니까? 사용자가 언어를 변경하려는 경우 example.org/de/some-page ~ example.org/fr/some-page 대신 example.org/de/some-page?lang=fr을 사용하고 example.org/fr/some-page으로 리디렉션 할 수 있습니다. 이것은 나에게 이해가되지 않습니다.

사용자가 특정 언어로 페이지를 보길 원하면 php 또는 다른 서버 측 언어로 페이지를 리디렉션 할 수 있습니다.

당신이 선택한 언어뿐없이 사이트를보기에서 사용자를 방지하기 위해이 같은 htaccess로 필요합니다 :

RewriteEngine on 

# add EN if there was no language selected 
RewriteCond %{REQUEST_URI} !^fr|de|en 
RewriteRule ^(.*) en/$1? [L,R=301]