一个站点有多个域:别名还是重定向?
我现在正在建立多个站点,其中许多站点具有多个域。问题是:我是否为域添加别名(使用ServerAlias)还是重定向请求?
显然,从可读性或者脚本角度来看,ServerAlias更好/更容易。但是我听说,如果所有内容都重定向到一个域,那么Google会更喜欢它。这是真的?如果是这样,应该使用什么重定向代码?
常见的虚拟主机示例将包括:
ServerName example.net ServerAlias www.example.net
这是错误的吗,除了example2.net和www.example2.net之外,www还应该是重定向吗?还是Google足够聪明,以至于所有这些网站(或者至少是www)都是同一个网站?
更新:需要别名的部分原因是别名要快得多。仅由于拨号用户使用(或者不使用)www而进行的重定向大大增加了初始页面加载。
更新和答案:感谢Paul找到了Google链接,该链接指示我们"通过避免重复出现重复内容惩罚的神话来帮助网站管理员。"但是请注意,这仅适用于同一站点上的内容,在文章中以" www.example.com/skates.asp?color=black&brand=riedell或者www.example.com/skates.asp?brand=riedell&color=黑色的"。实际上,该文章明确指出"请勿创建多个页面,子域或者内容实质上重复的域"。
解决方案
重定向更好,那么内容总是有一个规范的域。我听说Google对托管相同内容的多个域进行了处罚,但目前无法找到源(编辑,这是一篇文章,但来自2005年,这是互联网时代的古老历史!)(不正确,请参见编辑以下)
这是一些重定向到规范域的mod-rewrite规则:
RewriteCond %{HTTP_HOST} !^www\.foobar\.com [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/(.*) http://www.foobar.com/ [L,R=permanent]
在决定将请求重定向到规范域之前,这将检查主机是否不是规范域(www.foobar.com),并检查实际上是否已指定域。
进一步的编辑:这是直接从马口说起的一篇文章,似乎它没有我们想象的那么大。请仔细阅读本文,因为它区分了同一网站上的重复内容(如" www.example.com/skates.asp?color=black&brand=riedell和www.example.com/skates.asp?brand=riedell&color=black" ",并特别指出"请勿创建多个页面,子域或者内容实质上重复的域。"
如今,我怀疑这是否重要。如果我们在google中看到两个条目,则说明我们做错了。
如果指向我们网站的链接的一半引用一个URL,而另一半引用另一个URL,则每个URL只会获得一半的网页排名。即使Google不会因内容重复而对排名进行惩罚,我们也将蒙受损失。
服务器别名可能会导致CGI会话连续性出现问题:由于cookie添加到了它们所服务的域,因此必须谨慎地编写CGI脚本,以便它们知道别名,否则站点内和站点内的所有链接都必须是相对的,或者两者兼而有之,要避免出现很少的难以调试的问题要困难得多,因为浏览器会根据用户上次通过name.tld还是www.name.tld进入网站为我们提供不同的Cookie。
如果它们是完全不同的域名,则我们将需要重定向,因为否则将无法在两者之间共享Cookie。如果用户在example1.com上登录到网站,则他们在访问example2.com时需要再次登录。
如果它们只是不同的子域(example.com与www.example.com),则无关紧要。
SSL证书也可能是一个问题(通配卡证书可以缓解这种情况,但价格更高)。
因此,如果证书仅绑定到www.example.com,则不会验证example.com。如果这种情况适用于情况,那么在html和javascript中仔细处理,重定向和超链接引用非常重要。