Apache 适用于同一服务器上的多个域

Apache 适用于同一服务器上的多个域,apache,.htaccess,Apache,.htaccess,我有多个域连接到同一IP/服务器(我在自己的服务器上共享多个域)。我想: *=>/var/www/domain1/* *=>/var/www/domain2/* 到目前为止,我使用PHP完成了这一操作:所有请求都发送到一个PHP文件,该文件执行重新分发: if (strpos($_SERVER['HTTP_HOST'], 'domain1') !== false) // call the file in /var/www/domain1/* if (strpos($_SERVER['

我有多个域连接到同一IP/服务器(我在自己的服务器上共享多个域)。我想:

*=>
/var/www/domain1/*

*=>
/var/www/domain2/*

到目前为止,我使用PHP完成了这一操作:所有请求都发送到一个PHP文件,该文件执行重新分发:

if (strpos($_SERVER['HTTP_HOST'], 'domain1') !== false)
      // call the file in /var/www/domain1/*
if (strpos($_SERVER['HTTP_HOST'], 'domain2') !== false)
      // call the file in /var/www/domain2/*
我可以想象,没有PHP存在一个“更干净”的解决方案,但只有
.htaccess

将多个域连接到同一服务器的最佳做法是什么?如何将来自多个域的请求路由到服务器的正确目录?



注意:我发现了,但由于只有1个向上投票,我不确定这是否真的相关。

您可以使用VirtualHosts将某些站点路由到目录

以下是我使用的一般配置(在
httpd.conf
中,有大量其他信息):


ServerName mydomain.example.com
DocumentRoot/var/www/mydomain.example.com

您还可以将这些指令放在
/etc/apache2/sites available/.conf
的不同文件中,然后执行
a2ensite
,如果您所在的系统支持该指令(Debian/Ubuntu IIRC)。

apache vhost,与php无关您应该在apache/nginx/.conf中设置虚拟服务器如果您不知道如何尝试其中一个,那么如果域只是一个登录页(即一个HTML页),我该怎么办。我应该做多个虚拟主机,即使是一个单页的网站?或者对于这样一件简单的事情,我应该只在
/var/www
的根目录下使用一个简单的.htaccess,然后使用
RewriteCond%{HTTP_HOST}
进行过滤吗?谢谢!可以肯定的是:拥有10个VirtualHost并不意味着拥有10个并行运行的Apache实例(从而增加服务器CPU负载)?更一般地说,拥有多个虚拟主机会增加CPU负载吗?多个虚拟主机会略微增加CPU负载。但是,只要VirtualHost的数量保持在10或30以下,您就不会注意到这一点。有些服务器以这种方式运行数千个站点。但是,如果CPU负载是一个真正的问题,您可能不应该使用apache,而应该尝试一些轻量级的替代品,如nginx。但是,如果这不是一个真正的问题,那么您现在应该使用apache,因为使用nginx或其他工具时,它会变得更加复杂……感谢@Dagon和@StefanK的建议。如果每个域只是一个页面登录页,我应该做多个VirtualHost吗?或者对于这样一件简单的事情,我应该把.htaccess放在
/var/www
的根目录下,并使用
RewriteCond%{HTTP_HOST}
进行过滤吗?(参见问题的主要评论?)
<VirtualHost *:80>
    ServerName mydomain.example.com
    DocumentRoot /var/www/mydomain.example.com
</VirtualHost>