2013-10-14 46 views
1

I'm使用Mcamara Laravel /本地化(https://github.com/mcamara/laravel-localization)語言,如果不是在URL現在,我想重定向到默認的語言,如果不是出現在URL中的搜索引擎優化的目的。如何重定向到默認

如果我去www.mydomain.com,應該重定向到www.mydomain.com/en。如果我去www.mydomain.com/something,它應該重定向到www.mydomain.com/en/something。

我想爲避免重複內容與www.mydomain.com和www.mydomain.com/en重定向,因爲是相同的內容和相同的語言。我不想要兩個具有相同內容的網址。如果你的默認語言是「恩」你有www.mydomain.com相同的內容和www.mydomain.com/en/

我怎麼這個重定向? .htaccess或路由文件?

我不能配置它。謝謝!

回答

3

我從來沒有使用過mcamara/laravel定位包,但我想你可以創建一個簡單的路線,以檢測當語言沒有在URL中設置並重定向到的默認語言。

類似的東西:

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

但我建議你設置一個cookie,所以當用戶切換到不同的語言,你保持這種語言,如果用戶返回到主頁「/」,你重定向到這種語言,而不是默認語言。

更新基於OP評論:

如果你想不包含你需要做類似這樣的東西一門語言的所有路由重定向:

應用程序/ 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()); 
    } 
    } 
}); 

注意:我沒有試過代碼,僅供參考。

+0

我想都是從我的項目的URL重定向沒有語言的URL字符串,而不是隻有「/」 – Sangar82

+0

你應該在你的問題更清楚,然後@ Sangar82 –

+0

@ Sangar82我中庸之道更新我的答案,以反映您的評論。 – FR6