为了更好地描述它,我想要设置的是:
我在 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 文档