Apache的虚拟主机configurationwww与非www,重写或sServerAlias?

我们有一个中央的httpd.conf,我们包含各种虚拟主机的confs。 直到今天,我们并没有真正需要“www.subdomain.site.com”域名,只有“subdomain.site.com”。 现在我们做了,所以我想弄清楚这两种方法哪一个更好:

[1]。 使用重写

RewriteCond %{HTTP_HOST} ^www.subdomain.site.com RewriteRule ^(.*)$ http://subdomain.site.com$1 [R=301] 

要么

[2]。 使用ServerAlais:

  <VirtualHost 111.22.33.44:80> ServerName subdomain.site.com ServerAlias www.subdomain.site.com Include conf/subdomain.conf </VirtualHost> 

我想在Rewrite上有更多的处理,但不确定ServerAlias在这个混合中的performance。 有一个比另一个更好的search引擎优化富?

任何和所有的想法欢迎!

谢谢,

KM

我可能会做两个。 像这样的东西:

 <VirtualHost 111.22.33.44:80> ServerName subdomain.site.com #Using Wildcard: might as well handle any variation #such as ww.subdomain.site.com (remember to set this in DNS too) ServerAlias *.subdomain.site.com RewriteEngine On #Change all variations to the Canonical hostname for SEO. RewriteCond %{HTTP_HOST} !^subdomain.site.com [NC] RewriteRule ^/(.*)$ http://subdomain.site.com/$1 [R=301] Include conf/subdomain.conf </VirtualHost> 

注意:上面David Zaslavsky的解决scheme或多或less都是一样的,但是这样你不必为每个子域做一个单独的VirtualHost部分。

我可以想象重写解决scheme变得更好SEO-foo(好的词:-P),因为它通常被认为是最好的有一个规范的域名,每个人都被送到一个特定的内容集。 换句话说,有两个不同的域产生从服务器相同的结果可以拆分您的网站在两个域之间的排名,减less每个的价值。 (Google允许您使用其网站pipe理员工具指定规范网域,但只适用于Google)

我想你实际上可以在这里使用Redirect ,即

 <VirtualHost *:80> ServerName www.subdomain.site.com Redirect permanent / http://subdomain.site.com/ </VirtualHost 

这比调用mod_rewrite的计算量更小。

以下是对我有用的东西:

 <VirtualHost *:80> ServerName www.domain.com ServerAlias domain.com # [ snip some unrelated stuff ] # Redirect secondary hostnames to canonical hostname RewriteEngine On RewriteCond %{HTTP_HOST} ^domain.com$ RewriteRule (.*) http://www.domain.com$1 [R=301,L] </VirtualHost> 

这样做,而不是RedirectMatch的好处是,它将redirectdomain.com / about-到www.domain.com/about-us,而不是只是redirect每个请求到主页。 它还使用301redirect,将search引擎排名从domain.com/about-us转移到www.domain.com/about-us。