我无法在 Linux 上设置 pache 虚拟主机

我无法在 Linux 上设置 pache 虚拟主机

为了更好地描述它,我想要设置的是:

我在 htdocs 中有几个文件夹home/USER_NAME/www(类似于 public_html):

  • SITE1(整个站点 1 页面的内容、图像、脚本等)
  • SITE2(整个 site2 页面的内容、图像、脚本等)
  • SITE3(整个 site3 页面的内容、图像、脚本等)
  • 以及带有“HELLO WORLD!”的 INDEX.HTML

现在,当我输入 www.site1.com 时,我希望它指向 htdocs 内的 SITE1 文件夹。当我输入 site1.com 时,它应该从网络而不是本地主机获取数据。SITE2 和 SITE3 等也是如此...

我的主机文件如下所示:

127.0.0.1 www.site1.com
127.0.0.1 www.site2.com
127.0.0.1 www.site3.com

因此以 www 为前缀的名称被正确重定向。

现在我设置的一切几乎都是正确的 - 当我输入 www.SITE1.com 时,我从 index.html 获取数据,而不是文件夹 SITE1 - 正如它应该的那样,并在 httpd-vhosts.conf 文件中设置:

ServerAdmin [email protected]
DocumentRoot "/home/USER_NAME/www/htdocs/SITE1" # <- this is pointing to site1 folder NOT 
    # to "/home/USER_NAME/www/htdocs" where index.html is placed so WTF!? Why is index.html render when going to www.site1.com - 
    # why I need to write www.site1.com/SITE1 to get the content of the site1?
ServerName www.site1.com
ErrorLog "logs/site1a.log"
CustomLog "logs/site1b.log" common

有人能给我解释一下吗?我需要设置符号链接或类似的东西吗?为什么 httpd-vhosts.conf 无法正确读取?

答案1

需要设置 VirtualHost 和 ServerAlias 属性。ServerAlias 允许 Apache 将请求路由到正确的网站。如果 FQDN 不存在,您可以在 PC/客户端中修改 hosts 文件(修改Hosts文件

<VirtualHost *:80>
    DocumentRoot "/www/example2"
    ServerName www.example.org
    ServerAlias *.example.org
    # ...
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/www/example3"
    ServerName www.example.net
    ServerAlias *.example.net
    # ...
</VirtualHost>

文档:Apache 文档

相关内容