2015-10-20 5 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/controller, example.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">. Это делает многоязычный сайт взаимосвязанным, он лучше всего подходит для SEO, и его легче настроить в 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"; 

Когда дело доходит до SEO, вы, вероятно, следует установить канонический URL и рассмотреть возможность использования hreflang для нацеливания альтернативные версии сайта https://support.google.com/webmasters/answer/189077, а также место так много информации, как вы можете внутри sitemap.

+0

Я установил его, но все же, когда я нахожусь на сайте domain.com/ru или/en, выход всегда на английском языке, где находится интерфейсный языковой коммутатор? и как я заставляю его загружать правильный язык и включать его в URL-адрес? thanks –

+0

Вы внимательно прочитали инструкции? Вы должны поместить все файлы в apriopriate dirs и изменить application/config/routes.php. Поместите код для языковых переключателей внутри вашего вида https://github.com/devtime-share/codeigniter-kitlang#helpers. И подключите свои действия в своем приложении для работы с данными. – cssBlaster21895

+0

Не могли бы вы показать мне, как подключить действия? –