我正在开发一个多语言网站(php / mysql),我的问题是什么是语言识别的最佳解决方案 - 会话/ cookie或URI识别。我的意思是在SEO方面,什么会更准确。
由于
答案 0 :(得分:3)
有不同类型的项目不应使用相同的语言实现。
让我举几个例子:
第一个项目只有一个域名,比如example.com。该网站应提供三种语言版本。为了让搜索引擎清楚地抓取并索引每种语言 - 这里的正确解决方案是通过url传递它。 example.com/fr/for french。
第二个项目,每个语言都有一个域名,例如example.fr,example.co.uk。最好是每个域只由搜索引擎按其主要语言编制索引。因此,我选择的解决方案是在切换时将语言存储在cookie中。 (或完全重定向到另一个域)。
如果我们选择示例1的示例2的解决方案,example.co.uk / fr /和example.fr将具有相同的内容,这不是SEO友好。
答案 1 :(得分:1)
如果您将语言放入URI中,则webcrawler可以使用不同语言为网站编制索引,并且用户可以将其加入书签/链接。如果页面没有直接引用(=> URL),则无法进行此操作。
您可以将两种方式结合使用:如果URI中没有可用的语言特定信息,请尝试从cookie /会话中找到它,如果此方法失败,请查看Accept-Language
- 标题。现在,如果一个用户更改语言(通过链接或其他),请将其写入cookie(以供以后访问)。
答案 2 :(得分:1)
URL。您可以在所有路径中使用类似'/ en /'前缀的内容。显然你会使用mod_rewrite或适当的框架路由配置。
答案 3 :(得分:1)
仅使用会话/ cookie,某人无法直接链接到您的内容的“斯瓦希里语”版本。相反,你会有一个默认语言(英语?),所有传入链接将指向。在那里,如果用户希望您的内容使用普通话,那么他们可以选择该选项,但他们不会直接从门口获取,因此使用URI标识是我的个人选择。
有两种方法可以标记要在URI中使用的语言,方法是设置某种目录结构,例如:http://domain.tld/localized/fr/
用于法语内容的主页,或者您可以抽象它在您的数据库中,并通过GET
变量识别语言:http://domain.tld/?l=4
用于ID为4的语言主页
或者,正如Wesley van Opdorp所指出的,您可以为每种语言设置单独的域或子域:http://domain.fr
或http://fr.domain.tld
就SEO而言,我认为最好的方法是遵守顶级域名标准,并为您希望托管该网站的每种语言设置单独的域名(http://domain.fr
,{{1等等)。这当然意味着购买更多域名,因此如果这不是一个选项,我的第二选择是为每个语言设置子域名,例如:http://domain.ru
和http://fr.domain.tld