我有一台运行Apache的Ubuntu服务器,在/var/www/website/abc
,/var/www/website/xyz
和/var/www/website/lmn
下有3个网站。我有3个域(www.abc.com
,www.xyz.com
,www.lmn.com
)映射到同一台机器(将相同的ip映射到godaddy上的3个不同域)。
所以我搜索了一下,发现了这个链接 - virtual host setup,并在abc.com.conf
中提出了/etc/apache2/sites-available/
,并相应地提供了其他网站。启用了网站,然后重新启动了apache,但所有3个域上都显示了相同的网站(/var/www/website/abc
)。我重新检查了路径,但它们似乎是正确的。我无法弄清楚出了什么问题。如何将它们路由到相应的站点?
答案 0 :(得分:1)
如果您共享代码(在本例中为apache配置文件)以确定错误,将来会有所帮助。在任何情况下,这大致是文件的外观(他们不必看起来像这样,还有其他方法可以配置)。
首先检查/etc/apache2/apache2.conf并确保看到以下代码:
IncludeOptional sites-enabled/*.conf
apache2.conf文件是主配置文件。上面的那一行包括启用站点的文件夹中的所有配置文件。如果您使用Red Hat派生的操作系统,您会注意到配置文件结构不同(像Ubuntu这样的Debian衍生品喜欢将所有内容拆分成大量的配置文件,Red Hat衍生产品将它们整合在一起)
对于abc.com.conf:
<VirtualHost *:80>
ServerName www.abc.com
DocumentRoot /var/www/website/abc
</VirtualHost>
如果你也想要&#34; abc.com&#34;指向这个虚拟主机进入&#34; ServerAlias abc.com&#34;在ServerName行下面。你在这里做的是为端口80(:80)上的任何ip地址(*)创建一个VirtualHost块。如果要确保VirtualHost仅与特定ip匹配,则可以使用外部 IP地址替换打开的VirtualHost行中的*(如果有多个外部ips,则可能只需要这样做)指向你的网络服务器)。只要Host HTTP标头是www.abc.com,ServerName行就会告诉apache匹配此VirtualHost。 ServerAlias可用于指定要匹配的其他主机。请记住,www.abc.com和abc.com被视为不同的主机。 DocumentRoot行设置从中提供文件的目录。
同样适用于xyz.com.conf:
<VirtualHost *:80>
ServerName www.xyz.com
DocumentRoot /var/www/website/xyz
</VirtualHost>
如果你也想要&#34; xyz.com&#34;指向这个虚拟主机进入&#34; ServerAlias xyz.com&#34;在ServerName行下面。
最后是lmn.com.conf:
<VirtualHost *:80>
ServerName www.lmn.com
DocumentRoot /var/www/website/lmn
</VirtualHost>
如果你也想要&#34; lmn.com&#34;指向这个虚拟主机进入&#34; ServerAlias lmn.com&#34;在ServerName行下面。