搞乱了一阵之后,我决定在这里问一下:
我有一个虚拟主机,并希望在这台服务器上使用2个域名。 我的Apacheconfiguration文件看起来像这样:
NameVirtualHost * <VirtualHost *> ServerName www.domain1.de DocumentRoot /var/www/folder1/ </VirtualHost> <VirtualHost *> ServerName www.domain2.de DocumentRoot /var/www/folder2/ </VirtualHost>
在我的虚拟主机的域的configuration页上,分配给服务器IP的两个域。
现在的问题是:
有任何一个idee为什么第二个域只能使用添加的“www”?
domain1.de
作品,因为www.domain1.de
是第一个VirtualHost
,并作为默认。 您需要将ServerAlias domain2.de
添加到www.domain2.de
以使较短的版本也可以正常工作(您也应该为www.domain1.de
添加ServerAlias
)。
如果您不想将www.domain1.de
作为默认服务器,请在开始时添加另一个VirtualHost
提供一些简单的HTML文件。
如果你想规范你的域名(例如将所有domain.deredirect到www.domain.de),你可以使用类似mod_rewrite的东西:
<VirtualHost *> ServerName www.domain.de ServerAlias domain.de RewriteEngine On RewriteCond %{HTTP_HOST} !^www RewriteRule /(.*) http://www.%{HTTP_HOST}/$1 [R=301,L] </VirtualHost>
三条重写线基本上是:
如果你去'domain.de'它会看到它不是以'www'开头,并redirect到“www.domain.de”。
如果您想将其应用于您所托pipe的每个站点,则可以这样做:
<VirtualHost *> RewriteEngine On RewriteCond %{HTTP_HOST} !^www RewriteRule /(.*) http://www.%{HTTP_HOST}/$1 [R=301,L] </VirtualHost> <VirtualHost *> ServerName www.domain1.de DocumentRoot /wherever/1 </VirtualHost> <VirtualHost *> ServerName www.domain2.de DocumentRoot /wherever/2 </VirtualHost>
然后,当有人试图去“domain1.de”,它会打到第一个虚拟主机,它将自动redirect到“www。[无论他们键入的域名]”。
这样,如果你去'domain1.de'它会看到它不是以'www'开头,并redirect到“www.domain1.de”。 对于“domain2.de”,它将redirect到“www.domain2.de”。 每当你添加一个新的网站时,你都会自动获得这个function,如果你添加/维护了很多网站,这个function可以非常方便。
http://www.domain.com和domain.com在理论上可以完全不同的网站。 你必须指定两者。 你可以在现有的VirtualHost块中使用ServerAlias,或者,你可以做一个301redirectsearch引擎优化。
NameVirtualHost * <VirtualHost *> ServerName domain1.de DocumentRoot /var/www/folder1/ </VirtualHost> <VirtualHost *> ServerName www.domain1.de Redirect permanent / http://domain1.de/ </VirtualHost> <VirtualHost *> ServerName domain2.de DocumentRoot /var/www/folder2/ </VirtualHost> <VirtualHost *> ServerName www.domain2.de Redirect permanent / http://domain2.de/ </VirtualHost>
使用ServerAlias将多个域关联到虚拟主机
NameVirtualHost * <VirtualHost *> ServerName www.domain1.de ServerAlias domain1.de *.domain1.de DocumentRoot /var/www/folder1/ </VirtualHost> <VirtualHost *> ServerName www.domain2.de ServerAlias domain2.de *.domain2.de DocumentRoot /var/www/folder2/ </VirtualHost>