1

私は Mcamara Laravel/localization ( https://github.com/mcamara/laravel-localization ) を使用しており、SEO の目的で URL に存在しない場合はデフォルトの言語にリダイレクトしたいと考えています。

www.mydomain.com にアクセスすると、www.mydomain.com/en にリダイレクトされます。www.mydomain.com/something にアクセスすると、www.mydomain.com/en/something にリダイレクトされます。

www.mydomain.com と www.mydomain.com/en は同じコンテンツで同じ言語であるため、コンテンツの重複を避けるためにリダイレクトしたいと考えています。同じ内容の 2 つの URL は必要ありません。デフォルトの言語が「en」の場合、www.mydomain.com と www.mydomain.com/en/ に同じコンテンツがあります。

このリダイレクトを行うにはどうすればよいですか? .htaccessまたはroutesファイル?

設定できません。ありがとう!

4

2 に答える 2

3

mcamara/laravel-localization パッケージを使用したことはありませんが、言語が URL に設定されていないことを検出してデフォルト言語にリダイレクトする簡単なルートを作成できると思います。

そんな感じ:

Route::get('/', function(){
    return Redirect::to(Config::get('app.default_language'));  
});

ただし、ユーザーが別の言語に切り替えたときにこの言語を保持し、ユーザーがホームページ「/」に戻ったときに、デフォルトの言語ではなくこの言語にリダイレクトするように Cookie を設定することをお勧めします。

OP コメントに基づく更新:

言語を含まないすべてのルートをリダイレクトする場合は、次のようにする必要があります。

app/filters.php:

App::before(function($request){

  $params = explode('/', Request::path());

  if(count($params) >= 1){

    $language = $params[0];
    $languages = Config::get('app.languages'); //Available languages in your app ex.: array('en', 'fr', 'es')

    if(!in_array($language, $languages)){

      $default_language = Config::get('app.default_language');

      return Redirect::to($default_language.'/'.Request::path());
    }
  } 
});

注:情報提供のみを目的として、コードを試していません。

于 2013-10-14T19:41:38.740 に答える