CodeIgniter SEO - 每种语言一个URL

时间:2014-05-28 15:04:03

标签: php codeigniter localization seo

我正在建立一个网站,我决定使用codeIgniter作为框架。我的网站将在发布后翻译成两种语言,也许更多。我的网站很简单,包括这些功能:创建帐户,登录,浏览教程/常见问题解答页面。

我希望我的网址很简单,并以每种语言显示,以便在人眼和搜索引擎上更容易。

英文:
mywebsite /注册
法语:
mywebsite /题字

通过此设置,我需要为routes.php

中的每个页面设置路径
$route['default_controller'] = 'home';
// SIGN UP
$route['signup'] = 'signup_c/main/english';
$route['inscription'] = 'signup_c/main/french';

我想知道这是否是一种正确的方法,因为我没有太多页面,我需要为每个页面/语言添加一个路径。 另外,如果我需要在每个页面上提供一个链接,让用户更改当前语言,那么最好的方法是什么?我想到使用一个文件来存储每种语言中特定页面的所有URL,并显示一个ComboBox,其中包含指向除当前页面语言之外的所有这些页面的链接。

$signup_url = array(
'english' => 'signup',
'french' => 'inscription'
);

$lang['url_form_signup']        = 'signup';

在/language/[language_here]/url_lang.php中 但是如果把它放在那里我不知道如何迭代所有的URL

感谢指导新手! :)

2 个答案:

答案 0 :(得分:0)

使用国际化库可能是最好的方法。使用路由和不同的控制器功能将变得相当笨拙 - 保持不同语言与逻辑分离可能更容易理解和维护。

CodeIgniter有几个国际化库,包括:

值得一看标准语言libraryhelper

答案 1 :(得分:0)

感谢您的建议。

但是,我认为我不想根据自己的需要使用大型国际化图书馆。 这将是一些额外的工作,但我自己管理它非常简单,我更喜欢了解我的代码。

以下是我所做的工作。

控制器:

public function index($lang)
{
    $changeLangLink = array(
                "english"=>"signup",
                "french"=>"inscription");
    $data['title'] =  lang("title_page_signup");
    $data['lang'] = $lang;
    $data['changeLangLink'] = $changeLangLink;

    $this->load->view('templates/header', $data);
    $this->load->view('pages/signup', $data);
    $this->load->view('templates/footer');
}

查看(标题):

<html>
<head>
    <title><?php echo $title ?> </title>
</head>
<body>
    <select name="curr_lang" ONCHANGE="location = this.options[this.selectedIndex].value;">
        <option value="<?php echo $changeLangLink['english']; if ($lang == 'english') echo "\" selected=\"selected";  ?>">English</option>
        <option value="<?php echo $changeLangLink['french'];  if ($lang == 'french')  echo "\" selected=\"selected";  ?>">Fran&ccedil;ais</option>
    </select>

模板标题对我的所有页面都是通用的,我只需为每个页面编写一个小数组