Apache2pipe理服务器默认

我正在尝试正确设置两个域。 我有一些问题,我希望你能帮助我。 网站的一个conf:

<VirtualHost myipaddress:80> ServerName www.domain1.com ServerAdmin [email protected] DocumentRoot /home/domain1/public_html </VirtualHost> 

我的其他领域conf是:

 <VirtualHost myipaddress:80> ServerName www.domain2.com ServerAlias *.domain2.com domain2.com ServerAdmin [email protected] DocumentRoot /home/domain2/public_html </VirtualHost> 

默认网站被禁用。 问题是,当从我的浏览器访问“domain2.com”时,它总是redirect到“www.domain1.com”。 它只有当我明确地访问“www.domain2.com”时才有效。 我也有其他的域名,如“domain1.net”,“domain1.info”指向我的服务器,但在这个时候没有在Apache上configuration任何设置,但我可以从浏览器访问,并始终访问“www.domain1.com”。

顺便说一下,有任何可能的configuration通过Apache来处理IP只,我的意思是,如果我键入“ http:// myipaddress / ”我得到“www.domain1.com”…呃。

克里斯除了他的回答。 如果你想redirect每个子域名site1.domain2.com,site2.domain.com。 您可以轻松添加通配符serveralias:

 <VirtualHost *:80> ServerAlias domain2.com *.domain2.com DocumentRoot /var/www/domain2 </VirtualHost> 

现在关于处理IP。 您可以定义一个域来指向一个IP。 这也是Apache也在http请求的头部中得到的。 问题是,当你访问一个IP时,没有任何信息给networking服务器你实际上想要什么。 所以这意味着你需要提供一个IP /网站,如果你想实现这一点,并相应地改变你的虚拟主机! (也要确保你的域名指向他们各自的IP)。

 <VirtualHost 1.2.3.4:80> ServerAlias domain2.com *.domain2.com DocumentRoot /var/www/domain2 </VirtualHost> <VirtualHost 5.6.7.8:80> ServerAlias domain1.com *.domain1.com DocumentRoot /var/www/domain2 </VirtualHost> 

您应该将NameVirtualHost *:80添加到您的中央configuration,并使用<VirtualHost *:80>而不是<VirtualHost IP:80> 。 最后确保你的DNS正常工作。

更新 :要将domain2.com指向www.domain2.com,您可以使用ServerAlias

 ServerAlias domain2.com 

像这样的重写规则(有几个版本在互联网上浮动)

  RewriteEngine On RewriteCond %{HTTP_HOST} ^example\.com RewriteRule (.*) http://www.example.com/$1 [R=301,L] 

或单独的<VirtualHost> 。 我会去与ServerAlias domain2.com。

要查看Apache首先提供的内容,可以在shell上键入apache2ctl -S 。 首先默认为IP地址。