开发多语言网站的任何想法 - SEO,php,mysql

时间:2011-03-12 19:11:59

标签: php database-design mod-rewrite seo multilingual

我刚刚完成了客户的网站,现在他们想要使用不同的语言。

目前,网站内容存储在MySQL数据库的表中:

  • 网页 seotitle seodesc smallHtml fullHtml

  • 产品 ID seotitle seodesc smallHtml fullHtml

我在想一个好办法就是增加一张桌子:

  • languages ID LanguageCode language

然后将页面和产品表修改为:

  • 页面 slug seotitle seodesc smallHtml fullHtml languageCode
  • 产品 ID slug seotitle seodesc smallHtml fullHtml languageCode

所以我会使用像

这样的查询
SELECT * FROM pages WHERE slug = '$slug' AND language='$language'

我应该将$language设置为Cookie还是会话?

另外,就SEO而言,我仍然坚持做什么。目前网站网址结构为/pages.php?slug=page-slug。这会被mod_rewrite重写为/pages/page-slug

所以我在想/pages.php?slug=page-slug&code=languagecode改写/pages/page-slug/languagecode。同样的产品。

这会是一个好方法还是你能看到它以某种方式失败?

如果有人有任何更好的方法或链接到我可能错过的资源,我将不胜感激。

感谢阅读。

EDIT /////

如果我要使用此方法http://en.kioskea.net/faq/596-change-the-language-of-your-website并更改幕后语言,而不更改网址结构,Google将如何处理此问题?

2 个答案:

答案 0 :(得分:5)

Google和其他搜索引擎不会通过检查网址it’s the content that matters来猜测语言:

  

Google使用网页内容来确定其语言,但网址本身为人类用户提供了有关网页内容的有用线索。

这就是为什么你应该declare the content’s language properly:在HTTP中使用Content-Language指定文档的默认语言,并使用lang属性来更改文档中的语言。

拥有多语言网站,您还应该考虑做一些language negotiation(另见my answer to Detect Browser Language in PHP);但也要考虑与之相关的细微差别(见Common HTTP Implementation Problems)。

但是,选择合适的URI结构也很重要 - 即使仅针对用户。这意味着URI应该反映所选语言(除非您想为语言协商提供与语言无关的入口点)。

但您选择的URI设计取决于您。从用户的角度来看。

答案 1 :(得分:3)

基础知识,每个表都应该有一个ID,如果你按照建议更改它,看起来会丢失它。

许多主要网站(包括维基百科)都使用语言作为子域名前缀,使用2位数的ISO语言缩写,例如:英语= en等。这会使您的网址与 en.websitename.com 类似。请记住,大多数多语言网站都没有URL中显示的默认语言,因此如果英语是您的默认语言,那么英语将是 www.websitename.com 但法语会是 fr.websitename.com 。这似乎是一种普遍接受的方法,并且在查看子页面时也有助于URL看起来更清晰。除了语言位之外,您的其他页面URL结构看起来很友好。

您需要考虑访问者首次进入您的域名,无论是您的主页还是子页面(主要通过搜索引擎)。然后,您应该尝试将用户从Web浏览器重定向到该语言(请参阅here以获得执行此操作的好方法)。虽然如果用户(首次访问时)所使用的内容与浏览器的语言不同,这也是一个好主意,那么提供访问这两个版本的清晰方式的可用性是有益的。 ,然后通过cookie /会话记住。

其他搜索引擎优化提示:请参阅here了解基础知识。