Apache2 管理服务器默认

Apache2 管理服务器默认

我正在尝试正确设置两个域。我遇到了一些问题,希望您能帮助我。站点一的配置:

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

我的其他域名配置是:

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

默认站点已禁用。问题是,当我从浏览器访问“domain2.com”时,它总是重定向到“www.domain1.com”。只有当我明确访问“www.domain2.com”时,它才有效。我还有其他域,如“domain1.net”、“domain1.info”指向我的服务器,但目前尚未配置,也没有在 Apache 上设置,但我可以从浏览器访问并始终访问“www.domain1.com”。

顺便问一下,Apache 上是否有任何可能的配置来仅处理 IP,我的意思是如果我输入“http://我的 IP 地址/“我得到了“www.domain1.com”......啊。

答案1

除了 Chris 的回答。如果您要重定向每个子域 site1.domain2.com、site2.domain.com。您可以轻松添加通配符服务器别名:

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

现在来谈谈处理 IP。您可以定义一个域来指向 IP。这也是 Apache 在 http 请求的标头中获取的内容。问题是,当您访问 IP 时,Web 服务器无法获得您真正想要的信息。因此,这意味着如果您想实现这一点并相应地更改您的虚拟主机,您将需要提供一个 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>

答案2

您应该将其添加NameVirtualHost *:80到您的中央配置中并使用<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 首先提供什么服务,您可以apache2ctl -S在 shell 中输入。首先提供的默认服务是 IP 地址。

相关内容