0

正しい言語にリダイレクトする必要があるphpファイルを手伝ってください。サイトのアーキテクチャはsite.com/ensite.com/frです。

私のタラ:

<?php
$sites = array(
"en" => "/en/index",
);

$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

if (!in_array($lang, array_keys($sites))){
$lang = 'en';
}
// перенаправление на субдомен
header('Location: ' . $sites[$lang]);
?>
4

2 に答える 2

1

$_SERVER['PHP_SELF']ドキュメントルートからの相対パスを含む変数を言語フォルダに追加できます。

パスがの場合site.com/fr/file、この変数には。が含まれます/fr/file。この部分の最初の部分を削除すると、呼び出されたスクリプトの「言語に依存しない」パスが取得され、目的の言語ディレクトリに追加できます。

あなたの道があなたが説明した通りであるならば、あなたは次の解決策を試すことができます(テストされていません!):

<?php
$sites = array(
"en" => "/en",
);

$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

if (!in_array($lang, array_keys($sites))){
$lang = 'en';
}

$path_to_script = substr($_SERVER['PHP_SELF'], 3);

header('Location: ' . $sites[$lang] . $path_to_script);
?>

編集:アプローチを明確にするために:サイトがの場合site.com/fr/123/index.php、変数には、先頭の言語ディレクトリのないスクリプトディレクトリ$path_to_scriptが含まれます。/123/index.php次に、これを目的の言語ディレクトリに追加して、目的のパスを取得できます。/en/123/index.php

于 2012-06-24T15:55:41.517 に答える
0

/en/indexApacheのmod_rewriteを使用している場合を/en/index.php除きます(デフォルトではありません)。動作していないものの詳細をお知らせください。サポートさせていただきます。

編集:さらに、「HTTP_ACCEPT_LANGUAGE」が設定されていない可能性があるため、ユーザーに言語を選択するオプションを与えることができます。その場合、唯一の選択肢は英語であり、それはあなたの公衆を制限するでしょう。

ジオローカリゼーションについて勧める人もいますが、言語を含む小さなドロップダウンメニューを追加するだけで十分だと思います。

于 2012-06-24T15:33:06.060 に答える