Apache 虚拟主机配置 www 与非 www、重写还是 sServerAlias?

KM.*_*KM. 6 virtualization rewrite host serveralias apache-2.2

我们有一个中央 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]
Run Code Online (Sandbox Code Playgroud)

或者

[2]。使用 ServerAlais:

    <VirtualHost 111.22.33.44:80>
    ServerName subdomain.site.com
    ServerAlias www.subdomain.site.com
    Include conf/subdomain.conf
    </VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我想对 Rewrite 进行更多处理,但不确定 ServerAlias 在这种混合中的表现。一个比另一个获得更好的 SEO foo 吗?

欢迎任何和所有想法!

谢谢,

知识管理

mat*_*hew 2

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

<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>
Run Code Online (Sandbox Code Playgroud)

注意:上面 David Zaslavsky 的解决方案或多或少做了相同的事情,但这样您就不必为每个子域执行单独的 VirtualHost 部分。