大家好,并提前感谢您一眼,我感谢任何可能的帮助。我是一个搜索引擎优化的人,并继承了一个CakePHP网站,该网站将提供三种语言的内容。我希望获得一种规范(seo友好)的方式来获得一个良好的多语言URL架构,而不会让我的开发人员太烦恼。
我们想要的最终解决方案:
每种语言都有三个不同的URL(已翻译)的好网址。例如:
www.domain.com/L1/language-1-parent/language-1-child/ www.domain.com/L2/language-2-parent/language-2-child/ www.domain.com/L3/language-3-parent/language-3-child /
在这里,我们有一个内容片。这三种语言的内容相同,但会被翻译。因此,我们也希望翻译相应的子目录和URI,其中:
L {1-3}是指示语言的子目录
语言 - {1-3}是内容的“控制者”。目前我们只有一个控制器,无论语言子目录是否使用不同的语言。)
langauge- {1-3} -child是依赖的内容项或子目录,必须根据语言子目录进行翻译
假设问题:
我的开发人员告诉我,因为Cake有控制器来提供内容,因此翻译有点乱。 在上面的例子中:我假设'language-1,'language-2,'和'language-3'是控制器。
另外,我假设因为我们试图从一个控制器(具有不同的URL)提供三个内容版本,我们遇到了问题。
目前我们有这样的网址:
www.domain.com/L1/language-1-parent/language-1-child/ www.domain.com/L2/language-1-parent/language-1-child/ www.domain.com/L3/language-1-parent/language-1-child /
此处的问题是,无论用户是否选择其他语言,我们都会使用不对应且未翻译的URL。 此外,我们确实有一些内容项没有其他语言翻译。因此,我想在页面上放置一个rel = canonical元标记而不翻译和/或noindex这些页面,同时我们正在翻译。
再次,您的帮助非常受欢迎,我期待您的回复。我很乐意澄清任何事情。
答案 0 :(得分:1)
使用标准的cakephp配置,您可以使用cakephp internationlization
轻松实现这些类型的网址/eng/users/account
/fre/users/account
如果您需要这些网址王
/eng/users/account
/fre/utilisateurs/compte
然后你应该玩你的AppController.php
// pseudo code, you need to rewrite this section as you need.
var lang getUrlParams['language'];
var controller getUrlParams['controller'];
var action getUrlParams['action'];
if (controller[lang] != controller || action[lang] != action) :
redirect to `/lang/controller[lang]/action[lang]`;
endif;
在视图中,所有链接都应该像
一样调用$this->Html->link(__('My Link'), array('controller' => __('users'), 'controller' => __('account')))