大家好,谢谢您的光临,我非常感谢您的帮助。我是一个SEO的家伙,并继承了一个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,‘Langu-2,'language-3’是控制器。
另外,我假设,由于我们试图从一个控制器中提供三个内容版本(具有不同的URL),我们遇到了一个问题。
目前,我们有这样的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元标记,而不需要翻译和/或不索引这些页面,而我们正致力于翻译。
再次感谢您的帮助,我期待您的答复。我很乐意澄清任何事情。
发布于 2011-01-12 21:31:03
使用标准cakephp配置,您可以很容易地使用cakephp国际化实现这类URLs。
/eng/users/account
/fre/users/account如果你需要这些URL之王
/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')))https://stackoverflow.com/questions/4673948
复制相似问题