我想将我的网站国际化,以便可以使用多种语言访问。语言设置将自动在请求数据中检测到,并可在用户的设置中覆盖/存储在会话中。
我的问题涉及我应该如何根据页面的URL显示基于语言的同一页面的各种版本。假设我们只是查看http://www.example.com/
的索引页面,默认为英语。现在,如果讲法语的人加载索引页面,我应该将网址保持为http://www.example.com/
,还是应该将其重定向到http://www.example.com/fr/
?
我正试图弄清楚这对SEO有什么好处或后果。我不希望该网站的法语版本显示在google.com上,如果它阻止同一页面的英文版本显示在那里,但我希望它显示在google.fr。
答案 0 :(得分:38)
当您开始将网站本地化为多种语言时,从搜索角度来看,有很多事情需要考虑。一般来说,您需要注意并确保您不会因用户的意图过于聪明。自动检测语言和将它们存储在cookie中的事情在某些情况下可能会很好,但是如果它们成为本地化正常工作的要求,那么搜索引擎(以及真实的人)也会遇到一些问题。
对于搜索引擎,您需要确保他们可以查找和访问所有不同语言的所有内容,而无需POST请求(无下拉表单),javascript,flash或Cookie。因为搜索引擎通常不使用这些技术。
事实证明,这通常对真正的客户也有好处。如果你依赖于浏览器设置或ip检测,那么一些真正的客户要么借用朋友的电脑,要么在外国旅行,可能会被错误的语言困住(微软Bing实际上已经有这个问题了一段时间)。 / p>
以下是一些要记住的最佳做法
每种语言都应包含在信息体系结构的某个根目录下。最佳选择是为您的网站获取每个特定区域的TLD(mysite.fr)。虽然这有时不可行,但第二种选择是使用子域(fr.mysite.com),第三种选择是使用子文件夹(mysite.com/fr)。这使得我们最简单地查看一组页面并最好地确定语言/区域。 不要使它成为一个参数(mysite.com/products/iphone/lang=en®ion=us),这是我们检测的最困难的案例。
我们有语言分类器(人工智能网),试图确定页面描述的语言/区域。因此,请确保您的网页上有足够的线索来说明语言是什么。例如。如果页面是法语,请确保元描述标签也是法语,<h1>
标签,标题,并确保你有一个坚实的法语句子。许多网站会混合使用语言,并且页面上的实际法语很少
电话号码,邮寄地址和地理位置名称也是搜索引擎识别网页区域/语言的重要线索。使用这些(并确保它们是页面上的实际文本,而不是图像)
使用Google网站站长工具指定网页的语言和区域。创建一个帐户,验证您的网站,然后您可以指定您网站的不同部分所针对的区域和语言。
<强>误信息强> - 您可能听说过的lang属性或任何语言标签目前都没有被任何搜索引擎使用。当我们(微软Bing)去年对这些进行分析时,人们使用的最常见的“标准”lang标签只显示在网络上0.000125%的页面上 - 这还不够有用!
Vanessa Fox(她建立谷歌的网站管理员中心,并创建了站点地图协议)最近写了一篇关于Google如何思考本地化以及这对网站架构意味着什么的特别好的文章。我建议您在此处查看:http://www.ninebyblue.com/blog/making-geotargeted-content-findable-for-the-right-searchers/
答案 1 :(得分:3)
这就是我在my personal website解决问题的方法,作为i18n中的练习:
<link rel="canonical" href="/en/">
告诉搜索引擎可以找到该页面的特定语言网址。答案 2 :(得分:1)
由于页面的内容不同,我会为不同的语言提供不同的URL。
主要的搜索引擎足够智能,可以根据内容找出页面的语言。在URL中使用语言代码(如fr)也应该为搜索引擎提供提示。
答案 3 :(得分:0)
两个答案:我是怎么做的,以及我如何收集SEOiser认为你应该这样做。
我的网站主要是英文和几个德文页面,我打算有更多德语页面,可能还有一些西班牙语页面。我的根页面与语言无关,并且在英语等价物下面有德语页面(它们存在的地方)的导航链接,并使用英语和德语不同的网址(例如/services.html与/leistungen.html) )。
这是一个很好的用户界面,可能是糟糕的搜索引擎优化,因为所有不同的语言都纠结在一起,没有办法让搜索引擎解开它们,这可能会在计算搜索质量指标时产生不良后果。
SEO正确的事情是维护一个独特的层次结构,可能是www.site.tld / lang /,但更好的是lang.site.tld /,每个都有一个单独的sitemap.xml文件。
我更关心访客而不是搜索引擎,所以我会继续做错误的事情。
答案 4 :(得分:-2)
这是关于处理这种情况的想法。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule lang/(+)$ index.php?lang=$1 [QSA,NC]
</IfModule>
:首先检查是否有重写模块 在apache上显示和激活,因为如果不是,它将弹出错误
RewriteEngine On:我们准备重写引擎来开始处理 规则
[QSA]表示命名的捕获(语言)将附加到新创建的URI,
[NC]表示我们的URI不区分大小写