2012-02-21 22 views
2

私の最初のhtaccessのステップを行っていてどこにも行っていません...htaccessを使用して海外のユーザーを英語版のウェブサイトにリダイレクトする方法はありますか?

私はドイツ語と英語のサイトを持っています。私はドイツ語を話さないすべてのユーザーをサイトの英語版にリダイレクトしたいと思います。ここで

は私が持っているものです。

RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP:Accept-Language} (cs|da|el|en|es|et|fi|fr|ga|hr|hu|it|lt|lv|nl|no|pl|pt|ro|ru|sl|sr|sv) [NC] 
RewriteRule ^$ http://www.some.de/index.cfm?language=EN [R,L] 

つの質問:
私はドイツ語に設定されたブラウザでドイツにいると私はまだEnglischバージョンにリダイレクトしています。何故ですか?
ユーザーがいくつかの下位レベルのページから始める場合、後続のすべてのページでこれを行う必要がありますか?すべてのページに対して書き換えルールを作成する必要がありますか?

答えて

2

私はドイツ語でブラウザをドイツ語に設定していますが、まだEnglisch版にリダイレクトされています。何故ですか?

Accept-Languageは、言語のロケールと値のミッシュマッシュです。あなたのブラウザはおそらく正規表現で一致する他のlang/localeのペアも送信します(例えば、en-ca,en;q=0.8,en-us;q=0.6,de-de;q=0.4,de;q=0.2のようなもの)。あなたは試みることができるやってないドのためにマッチングされています

RewriteCond %{HTTP:Accept-Language} !de [NC] 

これにより、ユーザは、いくつかの下位レベルのページ上で開始した場合に、後続のすべてのページに対して行う必要がありますか?すべてのページに対して書き換えルールを作成する必要がありますか?

あなたのページのセットアップを持っていますが、これに自分のルールを変更してみてください可能性がどのようにわからない:

だから、 /の要求が /?language=ENにリダイレクトされます
RewriteRule ^(.*)$ /$1?language=EN [R,L,QSA] 

、および/somepath/?language=ENから/somepath/、および/file.cfm?someparam=value/file.cfm?language=EN&someparam=value

+0

ああ。これは良いと思う!どうもありがとうございました!最初の部分は完璧です(私がフランス語版を完成させるまで)、2番目の部分は大丈夫です。とにかく干渉しなければならない人もいます。 – frequent