0

問題を説明しましょう。fr と nl (オランダ語) の 2 つの言語でウェブサイトを運営しています。

当社のウェブサイトにアクセスすると、ブラウザの言語が「nl」に設定されていて、「en」に設定されている場合、(次のコードでわかるように) オランダ語版にリダイレクトされる www.domain.be に着陸します。 (オランダ人はブラウザにこの言語をよく使用するため)または www.domain.be / fr.domain.be のままにしておきます(どちらの URL もウェブサイトを呼び出すのに役立ちます - fr... 1 つは nl に応じたものです) ... 1)

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteRule ^$ http://nl.domain.be/ [L,R] 
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ http://nl.domain.be/ [L,R]
</IfModule>

ウェブサイトで、fr.domain.be または nl.domain.be に移動する場合は、2 つのリンク (右上隅) をクリックして選択できます。これらのリンクのいずれかをクリックすると、fr 部分に移動したい場合でも (オランダ語の部分をナビゲートしているときに)、nl 部分でも同じように htaccess によってリダイレクトされます。

どうすれば解決できますか?最初に Web サイトにアクセスしたときにのみ htaccess をリダイレクトし、その後無効にして、ユーザーが必要に応じて言語を選択できるようにしたいと考えています。

手伝っていただけませんか?私はこれで2日くらいです...

4

2 に答える 2

1

サイトベースをリダイレクトするだけ/なので、別のページに直接切り替えることは問題になりません。

手動で切り替えるときに、偽のインデックスページを使用することはできませんか?http://nl.domain.be/indexのように

于 2012-05-30T18:50:40.290 に答える
0

ルール セットに対して複数の条件を作成できるため、HTTP_REFERER がドメインに一致しない場合にのみリダイレクトが発生するという追加のチェックを追加できます。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteCond %{HTTP_REFERER} !^*\.domain\.be/ [NC] 
RewriteRule ^$ http://nl.domain.be/ [L,R] 
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteCond %{HTTP_REFERER} !^*\.domain\.be/ [NC] 
RewriteRule ^$ http://nl.domain.be/ [L,R]
</IfModule>

!基本的に、HTTP_REFERER が「(wildcard).domain.be」である URL パターンと一致しない場合に言っているわけではありません。

これにより、現在サイトにいて言語を変更しようとしている場合、ルールが実行されなくなります。

注:これをテストするためのApacheボックスの近くにいないため、構文がオフになっている可能性がありますが、正しい道をたどることができます。

于 2012-05-30T19:15:12.023 に答える