0

私たちのサイトは現在、ブラウザの言語がチェコ語の場合、次のようにルート ドメインからチェコ語のサブディレクトリにユーザーをリダイレクトします。

RewriteCond %{HTTP_HOST} ([^.]+).mydomain.com [NC]
RewriteCond %{HTTP:Accept-Language} (cs) [NC]
RewriteRule ^$ /cs/ [L,R=301]

ただし、時間を無駄にしないために、ログイン ページは mydomain.com/cs/loginからmydomain.com/dashboard移動します。ブラウザの言語はチェコ語 (コード: cs) です。そのために上記の条件を変更できますか? これらの RewriteConds の / がどこにあるのかわかりません! どうもありがとう。

4

1 に答える 1

2

公開ルート ディレクトリの .htaccess ファイルでこれを試してください。

RewriteCond %{HTTP_HOST} \.mydomain\.com$
RewriteCond %{HTTP:Accept-Language} cs [NC]
RewriteRule ^dashboard/?$ /cs/dashboard [R=permanent]

(これらのディレクティブを httpd.conf ファイルに追加する場合は、RewriteRule パターンの先頭にスラッシュを追加して、 になり^/dashboard/?$ます。スラッシュを必要としない .htaccess を使用していると仮定しました。 )

これにより、訪問者のブラウザから送信された HTTP Accept-Language ヘッダーの値のどこかに文字列「cs」が含まれている場合、/dashboardまたは/dashboard/へのリクエストが (301 ステータス コードで) リダイレクトされます。/cs/dashboard

ただし、これはコンテンツ ネゴシエーションを行う最良の方法ではない場合があります。まず、パーマネント リダイレクトは、/dashboard の URL が /cs/dashboard に永久に変更されたと Web クローラーを混乱させ、それが条件付きであることを認識しない可能性があります。次に、PHP などの言語で処理されるログイン スクリプトを使用している場合は、そのスクリプトで言語を検出し、ユーザーがログインを完了したときにリダイレクトを指示する方がおそらく簡単です。

于 2013-04-12T18:27:18.407 に答える