Apache上有多个域(包括www-“subdomain”)?

搞乱了一阵之后,我决定在这里问一下:

我有一个虚拟主机,并希望在这台服务器上使用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的两个域。

现在的问题是:

  • www.domain1.de工作
  • domain1.de工作
  • www.domain2.de工作
  • domain2.de不起作用

有任何一个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> 

三条重写线基本上是:

  1. 检查url是否以“www”开头
  2. 如果没有,redirect到http://www.domain.de/%5Bwhatever%5D

如果你去'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在理论上可以完全不同的网站&#x3002; 你必须指定两者。 你可以在现有的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>