我刚刚完成了客户的网站,现在他们想要使用不同的语言。
目前,网站内容存储在MySQL数据库的表中:
网页: seotitle , seodesc , smallHtml , fullHtml
产品: ID , seotitle , seodesc , smallHtml , fullHtml
我在想一个好办法就是增加一张桌子:
然后将页面和产品表修改为:
所以我会使用像
这样的查询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将如何处理此问题?
答案 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了解基础知识。