翻译自:Tip On Using SubDomain

  • 使用子域名须知

子域名的使用,可以缩减URL长度并且增强URL的可读性,而且有利于网站的所有者将网站的内容进行合理的分类。另外,由于搜索引擎将子域名当做一个单独的网站地址来看待,子域名还能提升网页在搜索引擎中的PageRank。然后,在建立您的子域名之前,还有一些事情必须要考虑到。

1)许多主机服务提供商提供的经济型套餐中并不支持子域名服务,如果您需要使用子域名并且移动您的网站内容,您必须选择一家支持子域名服务的提供商,或者购买支持子域名的套餐。

2)许多主机服务提供商针对子域名的建立和维护收取特别的费用。

3)如果您在网站中使用了Cookie,由于安全性的考虑,子域名的Cookie不能被主域名读取到。同样,子域名的Session Cookie也是不能够主域名所获取的,也就是说,如果一个用户在主域名中登录后,转到下面的一个子域名,子域名的网站并不能读取到相同的Session Cookie。这样的话,子域名的网站将分配给用户一个新的Session,并且用户不得不重新登录一次。不过,跨子域名的Session可以通过URL重写来实现,而不是通过Session对应Cookie信息的设置。

4)您的网站统计通常情况下是不包括子域名的统计信息,您需要为子域名建立单独的统计数据。

5)子域名的一大优点,是可以将您的网站分割为同一个域名下的多个小部分,并且每一个小部分都可以部署到单独的Web服务器,从而降低主域名Web服务器的负载(大部分主机服务提供商都是限制上行和下行的流量的)。

  • 在子域名中共享Cookie

正如上面解释的那样,Cookie不能够在子域名中共享,也不能在主域名和子域名间共享。为了让您的Cookie在主域名和子域名中都可以访问,需要使用下面的技术:

1)当写入Cookie的时候,设置Cookie的域名值为“.domain.ext”,以保证它可以被应用到所有子域名。

2)如果Cookie的域名值被设置为“.domain.ext”,当用户输入不带www的网站地址(例如http://domain.ext)时,Cookie信息将是不可访问的。因此,需要将所有形如http://domain.ext的请求,转到http://www.domain.ext来处理。

使用上面的解决方案,依然会遇上很多问题。您也可以设置一个默认的不带域名值的Cookie,同时设置一个带域名值".domain.ext"的Cookie来解决2)中的问题。这样的话,就不需要做额外的转向处理了。

然而,您需要记得Session Cookie是由网站服务器的程序自动设置的,您不能够通过设置Cookie的域名值来控制它。:-)