2017-03-17 8 views
3

英語、ドイツ語、フランス語の多言語サイトを構築しています。.htaccessで言語を変更する

  • 英語:example.com
  • ドイツ:example.com/
  • デ英語サイトはルートなり、他は彼らのサブディレクトリになりますフランス語:example.com/ fr

クエリ文字列を使用して、言語から言語にリダイレクトする清潔な解決策解決が難しいです。 (???EN 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> 

はどのはありますより良い解決の言語を追加する場合はとなり、より洗練されたコードとなります。

私は初めてhtaccessに取り組んでいます。

ありがとうございます!

+0

それは代わりにPHPでやろうとして価値があるかもしれませんか? lang GETをチェックし、それに応じてヘッダーを変更してください。 – Deckerz

+0

これはWordPressのマルチサイトで、各サイトには言語があるので、各ヘッダを変更するのは難しいでしょう。htaccessを使うと簡単になると思っていましたが、言語を変更する方法はわかりませんでした(もし、 ) – raktaktak

答えて

0

dirとクエリ文字列を使用せずに希望する言語にリンクしないのはなぜですか? 言語を変更したい場合は、example.org/de/some-page?lang=frの代わりにexample.org/de/some-pageexample.org/fr/some-pageのようにリンクを張ってから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] 
関連する問題