2015-10-20 30 views
0

我正在開發先前創建的Codeigniter項目。我就遇到了這個功能:Codeigniter Multi-lang將lang代碼添加到URL(set_userdata)

public function change_language() 
    { 
    $string_value = $this->input->post('lang_code'); 
    $rows = $this->Common_model->getTableData('language', array('code' => $string_value))->row(); 
    $this->session->set_userdata('language',$rows->name); 
    $this->session->set_userdata('locale',$string_value); 
    } 

數據庫:

---------------------------------------- 
    id | code | name | img_path  
---------------------------------------- 
    1 | en | English| images/en.png 
    2 | ru | Russian| images/ru.png 

功能工作正常,並加載語言文件的內容。該網站正在翻譯的URL保持相同的所有兩個EN/RU。由於這個原因,如果非默認頁面沒有被Google編入索引,那麼沒有。我如何在域後添加'ru'和'ru'?

途徑:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
/* 
| ------------------------------------------------------------------------- 
| URI ROUTING 
| ------------------------------------------------------------------------- 
| This file lets you re-map URI requests to specific controller functions. 
| 
| Typically there is a one-to-one relationship between a URL string 
| and its corresponding controller class/method. The segments in a 
| URL normally follow this pattern: 
| 
| example.com/class/method/id/ 
| 
| In some instances, however, you may want to remap this relationship 
| so that a different class/function is called than the one 
| corresponding to the URL. 
| 
| Please see the user guide for complete details: 
| 
| http://codeigniter.com/user_guide/general/routing.html 
| 
| ------------------------------------------------------------------------- 
| RESERVED ROUTES 
| ------------------------------------------------------------------------- 
| 
| There area two reserved routes: 
| 
| $route['default_controller'] = 'welcome'; 
| 
| This route indicates which controller class should be loaded if the 
| URI contains no data. In the above example, the "welcome" class 
| would be loaded. 
| 
| $route['404_override'] = 'errors/page_missing'; 
| 
| This route will tell the Router what URI segments to use if those provided 
| in the URL cannot be matched to a valid route. 
| 
*/ 
$route['default_controller'] = "home"; 
$route['search']    = "search/index"; 
$route['rooms/(:num)']   = "rooms/index/$1"; 
$route['rooms/(:num)/preview'] = "rooms/index/$1/preview"; 
$route['rooms/new']    = "rooms/newlist"; 
$route['tell_a_friend']   = "referrals/tell_a_friend"; 
$route['users/profile/(:num)'] = "users/vouch"; 
$route['404_override']   = ''; 
$route['hosting']   = 'listings'; 
// Ilan route 
$group_langs = 'en|ru'; 
$route["($group_langs)"] = $route['default_controller']; 
$route["($group_langs)/(:any)$"] = "$2"; 
$route["contact"] = "pages/contact"; 
$route["contact/(:any)"] = "pages/contact/$1"; 

$route["amazing-czech-republic"] = "amazing_czech_republic"; 


$route["news/prague_news/(:any)"] = "/news/prague_news/$1"; 


$route['administrator']   = 'administrator/backend'; 
$route['administrator/login'] = 'administrator/auth/login'; 

$route['administrator/admin_key/viewAdmin_key/(:any)'] = 'info'; 
$route['administrator/backend/(:any)'] = 'info'; 
$route['administrator/settings/lang_front/(:any)'] = 'info'; 
$route['administrator/settings/lang_back/(:any)'] = 'info'; 
$route['administrator/settings/home_meta_settings/(:any)'] = 'info'; 
$route['administrator/settings/change_password/(:any)'] = 'info'; 
$route['administrator/settings/how_it_works/(:any)'] = 'info'; 
$route['administrator/email/settings/(:any)'] = 'info'; 
$route['administrator/email/mass_email/(:any)'] = 'info'; 
$route['administrator/members/add/(:any)'] = 'info'; 
$route['administrator/members/changepassword/(:num)/(:any)'] = 'info'; 
$route['administrator/members/edit/(:num)/(:any)'] = 'info'; 
$route['administrator/lists/addlist/(:num)'] = 'administrator/lists/managelist/(:num)'; 
$route['administrator/lists/managelist/(:num)/(:any)'] = 'info'; 
$route['administrator/lists/view_aminity/(:any)'] = 'info'; 
$route['administrator/lists/view_all/(:any)'] = 'info'; 
$route['administrator/property_type/view_property/(:any)'] = 'info'; 
$route['administrator/property_type/view_all_property/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/addcity/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/viewcity/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/addcity_place/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/viewcity_place/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/editcity_place/(:num)/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/editcity/(:num)/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/addcategory/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/viewcategory/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/editcategory/(:num)/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/addpost/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/viewpost/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/editpost/(:num)/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/addphotographer/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/viewphotographer/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/editphotographer/(:num)/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/addtag/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/viewtag/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/edittag/(:num)/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/addknowledge/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/viewknowledge/(:any)'] = 'info'; 
$route['administrator/neighbourhoods/editknowledge/(:num)/(:any)'] = 'info'; 
$route['administrator/payment/finance/(:num)/(:any)'] = 'info'; 
$route['administrator/payment/details/(:num)/(:any)'] = 'info'; 
$route['administrator/payment/manage_gateway/(:num)/(:any)'] = 'info'; 
$route['administrator/payment/paymode/(:num)/(:any)'] = 'info'; 
$route['administrator/social/fb_settings/(:any)'] = 'info'; 
$route['administrator/social/twitter_settings/(:any)'] = 'info'; 
$route['administrator/social/google_settings/(:any)'] = 'info'; 
$route['administrator/managemetas/editmetas/(:num)/(:any)'] = 'info'; 
$route['administrator/page/viewPages/(:any)'] = 'info'; 
$route['administrator/page/addPage/(:any)'] = 'info'; 
$route['administrator/page/editPage/(:num)/(:any)'] = 'info'; 
$route['administrator/coupon/add_coupon/(:any)'] = 'info'; 
$route['administrator/coupon/view_all_coupon/(:any)'] = 'info'; 
$route['administrator/coupon/edit_coupon/(:num)/(:any)'] = 'info'; 
$route['administrator/help/viewhelp/(:any)'] = 'info'; 
$route['administrator/help/addhelp/(:any)'] = 'info'; 
$route['administrator/help/edithelp/(:num)/(:any)'] = 'info'; 
$route['administrator/faq/viewFaqs/(:any)'] = 'info'; 
$route['administrator/faq/editfaq/(:num)/(:any)'] = 'info'; 
$route['administrator/faq/addFaq/(:any)'] = 'info'; 
$route['administrator/contact/(:any)'] = 'info'; 
$route['administrator/joinus/viewJoinus/(:any)'] = 'info'; 
$route['administrator/cancellation/viewcancellation/(:any)'] = 'info'; 
$route['administrator/cancellation/editCancellation/(:num)/(:any)'] = 'info'; 


// Include cache routes-mark 

/* End of file routes.php */ 
/* Location: ./application/config/routes.php */ 

require_once APPPATH . 'cache/routes.php'; 

回答

0

你想要設置example.com/en/controllerexample.com/ru/controller?一般不是最佳做法,但這將有助於:Building a multi-language navigation menu in CodeIgniter

對我的一個項目有效的是爲頁面添加?hl=ru參數。 鏈接引用那些作爲<link href="https://example.com/controller?hl=ru" hreflang="ru" rel="alternate">。這使得多語言網站鏈接乾淨,這是最好的搜索引擎優化,它更容易在CI設置。

0

您可以依賴路由。這取決於你的應用程序的結構。在做多語言網站時,我使用https://github.com/devtime-share/codeigniter-kitlang。還有/的文檔裏面是優雅的解決方案,裏面routes.php文件

$group_langs = 'en|es|fr'; 
$route["($group_langs)"] = $route['default_controller']; 
$route["($group_langs)/(:any)$"] = "$2"; 

把什麼當談到搜索引擎優化,你應該建立規範的網址,並考慮使用的hreflang靶向網站https://support.google.com/webmasters/answer/189077的替換版本,也發生儘可能多的信息,你可以在站點地圖內。

+0

我已經安裝了它,但仍然當我navitage到domain.com/RU或/ EN輸出總是英語,前端語言切換器在哪裏?以及如何讓它加載適當的語言,並將其包含在網址中?謝謝 –

+0

您是否仔細閱讀說明?您必須將所有文件放在apriopriate dirs中並修改application/config/routes.php。在您的視圖中放置語言切換器的代碼https://github.com/devtime-share/codeigniter-kitlang#helpers。並在應用程序內部連接您的操作以處理數據。 – cssBlaster21895

+0

你能告訴我如何連接這些動作嗎? –