The*_*ppo 4 configuration domain apache-2.2
折腾了一会后,我决定在这里问:
我有一个虚拟主机,想在这台服务器上使用 2 个域。我的 apache 配置文件如下所示:
NameVirtualHost *
<VirtualHost *>
ServerName www.domain1.de
DocumentRoot /var/www/folder1/
</VirtualHost>
<VirtualHost *>
ServerName www.domain2.de
DocumentRoot /var/www/folder2/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
在我的 vhost 域的配置页面上,两个域都分配给了服务器 ip。
现在的问题是:
有没有人知道为什么第二个域只适用于添加的“www”?
小智 14
domain1.de有效,因为www.domain1.de是第一个VirtualHost并作为默认值。您需要添加ServerAlias domain2.de到www.domain2.de为较短版本的工作,以及(你应该增加ServerAlias对www.domain1.de太)。
如果您不想www.domain1.de作为默认VirtualHost服务,请在开始提供一些简单的 HTML 文件时添加另一个。
如果您想规范化您的域(例如将所有 domain.de 重定向到 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>
Run Code Online (Sandbox Code Playgroud)
三个重写行基本上将:
如果您转到“domain.de”,它会看到它不是以“www”开头并重定向到“www.domain.de”。
如果您想将此应用于您托管的每个站点,您可以这样做:
<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>
Run Code Online (Sandbox Code Playgroud)
然后,当有人尝试转到“domain1.de”时,它将命中第一个虚拟主机,这将自动将他们重定向到“www.[他们输入的任何域]”。
这样,如果您转到“domain1.de”,它会看到它不是以“www”开头并重定向到“www.domain1.de”。对于“domain2.de”,它将重定向到“www.domain2.de”。每次添加新网站时,您都会自动获得此功能,如果您要添加/维护大量网站,这将非常方便。
| 归档时间: |
|
| 查看次数: |
6787 次 |
| 最近记录: |